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

5
我有一个简单的任务。
我想要将rich text(HTML)在Qt或PyQt或PySide QLabel中右对齐。QLabel正常工作,直到我将小部件调整为小于文本长度。此时,向右的文本被截断。QLabel对于纯文本有效。实际上,这只是问题的简化版本,这里是原问题。
在下面的PyQt示例中,我列出了数字一到十。我希望始终看到数字“十”,即使我调整小部件的大小。它适用于纯文本,但在rich text(HTML)中会中断。这是Qt的一个错误吗?我添加了一些截图以显示效果。
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个回答

3

嗯...在Windows上,使用PySide(版本1.1.2)可以正常工作。

但是,您可以使用样式表,这应该可以与富文本一起使用:

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

我刚刚尝试了PySide 1.1.1,但它没有起作用。我还尝试了您在PyQt和Pyside中的样式表建议。它也不起作用。您确定当您将小部件缩小到小于文本的大小时,对齐方式适用于您吗?对我来说,富文本(html)小部件开始向右剪切。 - LozzerJP
@Lozzer 也许你应该在另一台电脑上尝试一下。 - Dan Barzilay
@DanBarzilay,我刚刚在完全干净的操作系统上进行了最新Python(2.7.4)和PyQt(4.10.1)的全新安装。效果与我上面描述的完全相同。当您将标签调整为小于文本宽度时,富文本标签的右侧会被裁剪,而非富文本标签的左侧会被裁剪。上述代码对您是否正常工作? - LozzerJP
@Lozzer 我也有这个问题,我95%确定这是PyQt的一个bug。 - Dan Barzilay
@DanBarzilay。以一种奇怪的方式来说,这是好消息。我担心只有我遇到了这个问题。我会提交一个错误报告。但实际上,我认为这个错误甚至可能出现在Qt中(而不是PyQt)。 - LozzerJP
@Lozzer 你是怎么想出那个的? - Dan Barzilay

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接