QTreeWidget のワード ラッピングの問題を回避するために、QTreeWidget に QLabel ウィジェットを追加しました。( QTreeWidgetItem をワードラップする方法を参照してください)。QLabel ウィジェットは、テキストが折り返されると何らかの理由で消えるテキストの周りにスペースがあるように見えます。また、ラベル テキストが空白の場合も表示されません。
QLabel で設定しようとしsetContentsMargin(0,0,0,0)
ましたが、うまくいきませんでした。私も試してみ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)