如何使QListWidget自动格式化Item的文本

时间:2017-01-07 07:04:03

标签: python qt pyqt qlistwidget qtextbrowser

下面的代码会创建一个填充了5行的QTextBrowser。每行100+ 长字符。要使所有字符(字母)可见,QTextBrowser会在窗口小部件的大小更改后重新格式化文本。 尝试拖动窗口小部件的右下角,以查看QTextBrowser如何不断更新文本以使其保持在视图中。

QTextBrowser:

enter image description here

from PyQt4 import QtCore, QtGui
app=QtGui.QApplication([])

textBrowser = QtGui.QTextBrowser()
for i in range(5):
    textBrowser.insertPlainText('MESSAGE-%04d'%i +'-'*100 + '\n')

textBrowser.show()
app.exec_()

我想知道QListWidget是否可以配置为支持“文本自动格式化”功能。以下代码是上面发布的代码的完整副本,但现在使用QListWidget代替QTextBrowserQListWidget剪切视图中的额外字符,并且在尝试重新格式化文本以使其对用户可见时不执行任何操作。有没有办法改变这种行为?

QListWidget:

enter image description here

from PyQt4 import QtCore, QtGui
app=QtGui.QApplication([])

listWidget = QtGui.QListWidget()
for i in range(5):
    QtGui.QListWidgetItem('ITEM-%04d '%i+'-'*100, listWidget)

listWidget.show()
app.exec_()

以后编辑:

以下是尝试使用setItemWidgetQListWidgetItem替换为QTextBrowser。但不幸的是,结果QTextBrowser的大小太大了。如果有办法微调它的大小,它可能是一个解决方案:

enter image description here

from PyQt4 import QtCore, QtGui
app=QtGui.QApplication([])

class TextBrowser(QtGui.QTextBrowser):
    def __init__ (self, parent = None):
        super(TextBrowser, self).__init__(parent)

listWidget = QtGui.QListWidget()
for i in range(5):
    item = QtGui.QListWidgetItem('ITEM-%04d '%i+'-'*100, listWidget)
    itemWidget = TextBrowser()
    itemWidget.setText('ITEM-%04d '%i+'-'*100)
    item.setSizeHint(itemWidget.sizeHint())
    listWidget.setItemWidget(item, itemWidget)

listWidget.show()
app.exec_()

0 个答案:

没有答案