我有一个 QTreeWidget 填充了一些 itemwidgets,其主要小部件将是一个 QTextEdit。我遇到的问题似乎是将尺寸缩小到可以管理的程度。将大小策略设置为最大值的常用方法似乎不起作用。这是示例代码:
from PyQt4.QtGui import *
from PyQt4.QtCore import *
class MyMainWindow(QMainWindow):
def __init__(self, parent=None):
QMainWindow.__init__(self, parent)
self.tree = QTreeWidget(self)
self.tree.setColumnCount(1)
self.setCentralWidget(self.tree)
textEdit = QTextEdit()
textEdit.setText("very Small Text Edit")
sizePolicy = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.MinimumExpanding)
textEdit.setSizePolicy(sizePolicy)
itemWidget = QTreeWidgetItem()
itemWidget.setText(0, "")
self.tree.addTopLevelItem(itemWidget)
self.tree.setItemWidget(itemWidget, 0, textEdit)
biggerTextEdit = QTextEdit()
biggerTextEdit.setText("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas et mauris in felis tempus molestie eu sit amet sapien. Proin dapibus pretium ipsum. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Pellentesque feugiat semper sem a accumsan. Nulla sollicitudin enim quis velit blandit posuere. Ut fringilla vulputate dolor, a accumsan lectus gravida a. Sed convallis facilisis mi et ullamcorper. Integer consectetur aliquet odio sit amet posuere.")
itemWidget2 = QTreeWidgetItem()
itemWidget2.setText(0, "")
self.tree.addTopLevelItem(itemWidget2)
self.tree.setItemWidget(itemWidget2, 0, biggerTextEdit)
if __name__ == "__main__":
import sys
app = QApplication(sys.argv)
ui = MyMainWindow()
ui.show()
sys.exit(app.exec_())
请注意,无论文本的长度如何,似乎对文本编辑的高度都没有任何影响。QTextEdit 如何将自身(至少垂直)缩放到尽可能小的尺寸,并且为了知识,为什么它不像许多其他小部件那样以这种方式表现?提前致谢!
编辑:我现在应该注意到,我试图通过使用 QLabel(它在调整大小、显示和文字扭曲方面,就像我想要的那样工作)来欺骗这种效果,并将文本交互标志设置为可编辑。如果有办法访问标签的编辑文本,这几乎是可行的。不幸的是,标签上的任何 .text() 调用都会产生原始文本。QLineEdit 不能是多行或自动换行,QTextEdit 似乎过于复杂。
现在的问题是,什么是创建小(300 个字符或更少)文本显示小部件的最佳小部件,它也可以编辑?