如何在Qt / PyQt / PySide QLabel中正确对齐富文本(HTML)?

时间:2013-04-21 12:18:14

标签: qt pyqt alignment richtext qlabel

我有一个简单的任务。

我想在Qt或PyQt或PySide QLabel中对齐richtext(HTML)。 QLabel工作正常,直到我调整窗口小部件的大小,使其小于文本长度。此时,右侧的文本被切断。 QLabel可以使用纯文本正常工作。实际上,这只是问题here的简化版本。

在下面的PyQt示例中,我列出了一到十个数字。即使我调整小部件的大小,我也总希望看到数字“十”。它适用于纯文本,但适用于richtext(HTML)。这是Qt中的错误吗?我添加了一些屏幕截图来显示效果。

Before shrinking the widget

After shrinking the widget

from PyQt4 import QtGui, QtCore

import sys

if __name__ == '__main__':
    app = QtGui.QApplication(sys.argv)
    mw = QtGui.QWidget()

    labelPT = QtGui.QLabel()
    labelPT.setText('one two three four five six seven eight nine ten')
    labelPT.setAlignment(QtCore.Qt.AlignRight)

    labelRT = QtGui.QLabel()
    labelRT.setText('one two three four <b>five</b> six seven eight nine ten')
    labelRT.setAlignment(QtCore.Qt.AlignRight)

    vbox = QtGui.QVBoxLayout()
    vbox.addWidget(labelPT)
    vbox.addWidget(labelRT)

    mw.setLayout(vbox)
    mw.setMinimumWidth(30)
    mw.show()

    sys.exit(app.exec_())

1 个答案:

答案 0 :(得分:3)

哼......它适用于PySide(Windows上的1.1.2版)。

但是,您可以使用应该使用富文本的样式表:

labelRT.setStyleSheet("qproperty-alignment: AlignRight;")