2012-06-02 57 views
0

这可能是Qt4.7和Qt4.8之间的回归。每个段落应该分开一行,但在4.8上已经坏了。你知道这个解决方法吗?在Qt 4.7和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_()) 

回答

3

您指定的0.3一个line-height没有给出一个单元。文档says this about length units

一个数字后跟一个测量单位。 CSS标准建议用户代理必须忽略具有非法值的声明。在Qt中,指定度量单位是强制性的。为了与Qt的早期版本兼容,没有度量单位的数字在大多数情况下都被视为像素。

但是,它并没有说明在哪个上下文中它被解释为像素,而不是它在哪个上下文中。在line-height的背景下,可能发生了变化。

line-heigthone of the more recently added features,因此与早期版本的兼容可能不会被视为问题。

(其实,我刚刚看到line-height甚至没有正式在样式表中引用提及。)

+0

谢谢,这似乎删除行高度固定的问题 – Miso