0

これはおそらく Qt4.7 と Qt4.8 の間のリグレッションです。各段落は別々の行にあるはずですが、4.8 では壊れています。これに対するいくつかの回避策を知っていますか?

#!/usr/bin/env python3

import sys
from PyQt4.QtGui import *
from PyQt4.QtCore import *


class CustomLabel(QLabel):
    def __init__(self, text):
        super(CustomLabel, self).__init__(text)
        self._text = text

    def paintEvent(self, event):
        brect = QRect()  #Qt.rect()
        painter = QPainter(self)
        painter.fillRect(brect, Qt.transparent)
        doc = QTextDocument(self)
        stylesheet = "*{color: " + painter.pen().color().name() + "; line-height:0.3; margin:0; padding:0;}"
        doc.setDefaultStyleSheet(stylesheet)
        doc.setUndoRedoEnabled(False)
        doc.setHtml(self._text)
        doc.setUseDesignMetrics(True)
        doc.drawContents(painter, QRectF())
        print(doc.toHtml())
        print(doc.toPlainText())

app = QApplication(sys.argv)
label = CustomLabel("<p><font style=\"font-size: 9px;\" color=\"#fffe51\">Text 2</font></p><p><font size=\"9px\" color=\"#aaaaaa\">Text 3</font></p>")
label.show()
label.resize(100, 100)
sys.exit(app.exec_())
4

1 に答える 1

3

単位を指定せずにline-heightofを指定します。0.3ドキュメントには、長さの単位について次のように記載されています。

数値の後に測定単位が続きます。CSS 標準では、ユーザー エージェントが不正な値を含む宣言を無視する必要があることを推奨しています。Qt では、測定単位を指定することが必須です。以前のバージョンの Qt との互換性のために、測定単位のない数値はほとんどのコンテキストでピクセルとして扱われます。

ただし、どのコンテキストでピクセルとして解釈され、どのコンテキストで解釈されないかは正確にはわかりません。の文脈での解釈の仕方が変わったのでしょうline-height

line-heigth最近追加された機能の 1 つであるため、以前のバージョンとの互換性はおそらくここでは問題とは見なされません。

line-height(実際、スタイル シートのリファレンスで公式に言及されていないことを私は見たばかりです。)

于 2012-06-02T10:54:07.053 に答える