gpt4 book ai didi

qt - 从 QTreeWidget 中的 QLabel 中删除空间

转载 作者:行者123 更新时间:2023-12-04 13:32:08 26 4
gpt4 key购买 nike

我已将 QLabel 小部件添加到我的 QTreeWidget 中以解决 QTreeWidget 中的自动换行问题。 (参见 how to word wrap a QTreeWidgetItem)。 QLabel 小部件似乎在文本周围有间距,当文本换行时由于某种原因消失了。当标签文本为空白时,它也不会显示。

我尝试在 QLabel 上设置 setContentsMargin(0,0,0,0) 但这没有用。我还尝试了 setStyleSheet("border: 0px; margin: 0px; padding: 0px;") 也没有帮助。

截图: Tree Screenshot

您可以看到,QT 是否决定在单词周围放置间距缓冲区取决于描述的长度。它仅在启用自动换行时发生。进一步玩弄似乎表明它依赖于描述字符串中的空格。字符串中没有空格会阻止单词周围的额外空格。可能与 QLabel 使用其自动换行属性所做的事情有关。

# This code is Ruby because I'm using the qtbindings gem
tree = Qt::TreeWidget.new
tree.setColumnCount(2)
tree.setHeaderLabels(["Name", "Description"])

top_node = Qt::TreeWidgetItem.new(["top"])
top_node.setCheckState(0, Qt::Unchecked)
tree.addTopLevelItem(top_node)
desc_label = Qt::Label.new("description")
desc_label.setWordWrap(true) # Remove and it works
tree.setItemWidget(top_node, 1, desc_label)

node = Qt::TreeWidgetItem.new(["test1"])
node.setCheckState(0, Qt::Unchecked)
top_node.addChild(node)
desc_label = Qt::Label.new("description1 is long and very interesting")
desc_label.setWordWrap(true) # Remove and it works
tree.setItemWidget(node, 1, desc_label)

最佳答案

您看到的是 QLabel 绘制/定位的布局逻辑效果(您可能会在 https://qt.gitorious.org/qt/qt/source/f7b3072924fb57b3979ff4d536eb213270be1047:src/gui/widgets/qlabel.cpp#sizeForWidth 中看到这些例程,请参阅 sizeForWidth() 方法)。

你可以做的是:

您可以通过尝试设置 setTextFormat() 并对所有自定义项目显式使用 PlainText 或 RichText 来稍微改变行为。但这可能无济于事。

我的建议是对使用过的 QItemDelegate 或 QStyledItemDelegate 进行子类化,并重新实现 sizeHint( const QStyleOptionViewItem & option, const QModelIndex & index ) 以返回您自定义项目所需的大小、高度。然后使用setItemDelegate() 来查看。

关于qt - 从 QTreeWidget 中的 QLabel 中删除空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21007272/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com