【问题标题】:QTreeWidget set height of each row depending on contentQTreeWidget 根据内容设置每行的高度
【发布时间】:2011-02-08 07:42:09
【问题描述】:

我想在 QTreeWidget 中制作具有多行内容的可编辑单元格,为此我使用 QPlainTextEdit 作为委托。我需要为所有在编辑和显示之间切换顺利进行的行设置适当的大小,没有任何可见的变化。

rect = textEdit.blockBoundingRect(textEdit.firstVisibleBlock())
  • 有了这个我可以找到我需要为行设置的高度,但是我错过了我可以做到的地方。

如何在初始化阶段为 QTreeWidget 的行设置适当的高度以及如何处理它的变化?

【问题讨论】:

    标签: qt pyqt


    【解决方案1】:

    您需要重新实现委托的 sizeHint()。它将自动处理行的高度和宽度。 请注意,在这种情况下,QTreeWidget::uniformRowHeight 属性必须为 false,但如果它包含许多行,它会减慢树元素的渲染速度。

    【讨论】:

    • 谢谢,但是我如何从这个函数中获取当前的小部件?它不像 setEditorData(QWidget *, QModelIndex &) 或 setModelData(QWidget *, QAbstractItemModel *, QModelIndex &) 函数那样提供它。
    • 我还没有弄清楚如何在需要时做到这一点。我使用的解决方法是在模型的 SizeHintRole 中保存委托的编辑器大小提示,当编辑结束时,在没有显示编辑器时使用它。或者,最好使用 FontMetrics 类,因为可以从它所包含的文本中获取项目的边界矩形。所以,你会问,'初始化阶段呢'。您可以通过多种方式做到这一点:使用 FontMetrics 类来设置 SizeHintRole 或从不可见的 QPlainTextEdit 中获取它,将适当的文本放置在它上面并要求它被绑定。矩形。
    猜你喜欢
    • 1970-01-01
    • 2015-04-14
    • 2013-11-22
    • 1970-01-01
    • 2015-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-07
    相关资源
    最近更新 更多