这可能是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_())
答案 0 :(得分:3)
您指定line-height
0.3
而未提供单位。文档says this about length units:
一个数字后跟一个测量单位。 CSS标准建议用户代理必须忽略具有非法值的声明。在Qt中,必须指定测量单位。为了与早期版本的Qt兼容,在大多数情况下,没有测量单位的数字被视为像素。
然而,它并没有准确地说明它被解释为像素的哪种情境,而不是像素。可能会在line-height
的背景下对其进行解释。
line-heigth
是one of the more recently added features,因此与早期版本的兼容性可能不会被视为问题。
(实际上,我刚刚看到样式表参考中没有正式提及line-height
。)