2011-11-10 85 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