我已将 QLabel 小部件添加到我的 QTreeWidget 以解决 QTreeWidget 中的自动换行问题。(请参阅如何对 QTreeWidgetItem 进行自动换行)。QLabel 小部件似乎在文本周围有间距,由于某种原因,当文本换行时它会消失。当标签文本为空白时,它也不会显示。
我尝试setContentsMargin(0,0,0,0)
在 QLabel 上进行设置,但没有奏效。我也试过setStyleSheet("border: 0px; margin: 0px; padding: 0px;")
了,也没有帮助。
截屏:
您可以看到,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)