2011-11-10 82 views
2

我们正在制作一个基于QTextEdit的编辑器。 我们在QtGui.QTextEdit中使用QtGui.QComboBox来选择字体大小。 我们使用的CSS尺寸是:small,normal,large,x-largexx-large。 最大的大小约24点。 有什么办法可以让它达到48分? (在保持与Ctrl键放大 - 鼠标轮的能力。)基于QTextEdit的编辑器中较大的CSS字体大小

+0

使用'pt'或'px'代替相对的CSS字体大小。 – Blender

+0

然后CTRL +鼠标滚轮不会缩放。 – gseattle

回答

1

CSS font-size property支持是绝对大小(以点或象素指定),或命名相对尺寸(“小”,“中”, “大”,“x大”或“xx大”)。

相对大小与文档字体大小有关 - 这意味着在富文本文档的body标记上设置的字体大小。如果文档字体大小没有明确设置,它将从小部件的默认字体(如果它具有一个)或应用程序默认字体继承。

因此,如果文档的字体已被设置为10PT:

font = QFont(self.widget.font()) 
font.setPointSize(10) 
widget.setFont(font) 

然后相对字体将被计算如下:

  • small:0.8 * 10 = 8磅
  • medium: 1.0 * 10 = 10pt
  • large:1.2 * 10 = 12pt
  • x-large:1.5 * 10 = 15pt
  • xx-large:2.0 * 10 = 20pt

这意味着,只有这样,才能得到xx-large为48pt将设置文档字体大小来24PT(这是很没用,但它是)。

请注意,缩放通过更改文档字体大小来工作。因此,在文本块上设置绝对字体大小将防止缩放。

+0

谢谢你澄清这一点。 不幸的是,这仍然让我们无法制作更大的字体。 是否可以重新定义样式表以增加乘数? 或者我们可以定义更多的样式表? 或者是否有其他方法可以在不牺牲缩放文档的能力的情况下更改字体大小? –

+0

@VeetVivarto。乘法器被硬编码到'QTextCharFormat'实现中,该实现也用于格式化'big','small','h1','h2'等html标签。所以很难找到解决办法,特别是如果你想要文档缩放。你真的遇到了与网页设计师相同的问题 - 只是更糟糕,因为'QTextEdit'只支持有限的html和css子集。你在建什么样的编辑器?你有没有考虑过使用[QScintilla](http://www.riverbankcomputing.com/software/qscintilla/intro)呢? – ekhumoro