【问题标题】:Limit the number of items in a QTreeWidget限制 QTreeWidget 中的项目数
【发布时间】:2016-02-21 16:46:02
【问题描述】:

有没有办法限制我的 QTreeWidget 可以拥有的项目数量,类似于 FIFO 缓冲区?

【问题讨论】:

  • 当您说 FIFO 缓冲区时,我猜您是在谈论一维队列。树小部件维护一个树视图,显示一个树模型。从本质上讲,它可能有多个级别,每个级别包含多个项目。因此它是多维的。你到底想达到什么目的?你是想限制元素的总数,一个元素可以拥有的子元素的数量,树级别的兄弟姐妹的数量,还是完全不同的东西?如果超出限制,应该发生什么?
  • 我正在尝试创建一个用作跟踪的树。问题是,如果我继续填充树并且其中将包含许多项目,那么 GUI 将开始工作缓慢并最终崩溃。我认为通过限制树可以容纳的项目数量(比如说 2000),GUI 会更好地工作。所以是的,我试图以某种方式限制树中元素的总数

标签: python qt pyqt qtreewidget qtreewidgetitem


【解决方案1】:

我仍然不完全确定你想要实现什么。但这里有一些一般性建议。

如果您想为小部件与底层数据结构的交互实现自定义约束和行为,您应该考虑遵循 Qt 的模型视图架构。

任何显示 QWidget 的多个项目都可以替换为 QView + QModel。例如,您可以将QTreeWidget 替换为QTreeView。然后你实现你自己的从QAbstractItemModel 派生的模型并将它附加到视图中。视图将自动适应模型中所做的更改。这样,您可以例如在模型类中有一个容器,每当添加一个项目时,您检查是否达到最大数量,然后删除任何其他元素。

These tutorials 会让你更深入地理解我的建议。我知道它们是 C++,但所有这些都应该很容易翻译成 pyqt。

【讨论】:

  • 谢谢!我已经开始实现 QTreeView 而不是 QTreeWidget 并且我已经设置了最大数量的元素。它看起来运行良好,比 QTreeWidget 快得多。我没有使用自定义模型,我使用的是 QStandardModel。如果它被证明效率低下,我会去定制,但现在它似乎工作正常。也感谢您的教程:)
  • 不客气。我也喜欢这些教程。他们又快又容易!如果你喜欢我的回答,你可以考虑投票。快乐编码。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-15
  • 1970-01-01
相关资源
最近更新 更多