2

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

QText浏览器:

在此处输入图像描述

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现在用来代替QTextBrowser. 剪辑从视图中多余的QListWidget字符并且不做任何尝试重新格式化文本以使其对用户可见。有没有办法改变这种行为?

QListWidget:

在此处输入图像描述

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_()

稍后编辑:

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

在此处输入图像描述

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_()
4

0 回答 0