如何在PyQt4中更改QTextEdit内所有内容的字体大小?

6
我有一个QTextEdit小部件,其中的内容是使用QTextEdit.textCursor以编程方式填充的。
我的计划是让用户在QTextEdit中查看填充的信息,必要时编辑文本,并稍后使用QPrinter打印到PDF文件中。
但是,在允许用户编辑文本之前,我想更改QTextEdit的所有内容的字体大小。 我只需要将内容设置为单个字体大小; 无需适应多个字体大小。
我尝试在textCursor操作之前和之后都使用QTextEdit.setFontSize(16),但似乎没有任何效果。
如何更改QTextEdit小部件内容的字体大小?

http://pyqt.sourceforge.net/Docs/PyQt4/qtextedit.html#setFontPointSize 这个函数符合你的需求吗? - Jablonski
2个回答

16

QTextEdit.setFontPointSize这样的函数作用于当前格式。如果你想一次性更改所有的字体大小,你需要设置基础字体的大小,像这样:

    font = QtGui.QFont()
    font.setPointSize(16)
    self.editor.setFont(font)

请注意,您还可以使用放大缩小插槽来更改基础字体的相对大小。这些插槽的实现方式与上面显示的方式完全相同,会更改基础字体大小。


设置字体大小后,缩放没有效果!不能同时使用吗? - sonichy
@sonichy。对我来说它运行良好。你可能在某些方面做了不同的事情。也许你可以尝试使用不同的字体系列?有些字体可能不可缩放。 - ekhumoro
你怎么知道QTextEdit.setFontPointSize只对当前格式起作用?文档中没有描述这种行为。http://doc.qt.io/qt-5/qtextedit.html#setFontPointSize - iMath
1
@iMath。文档中说明:"设置当前格式的点大小"。 - ekhumoro

9
我找到了完整的解决方案。您应该:
  • 记住当前的textCursor
  • 调用 selectAll
  • 调用 setFontPointSize
  • 调用 setTextCursor 来清除选择
在C++中,可以使用以下代码进行操作(这只是一个示例,但可以解决您的问题):
QTextCursor cursor = ui->textEdit->textCursor();
ui->textEdit->selectAll();
ui->textEdit->setFontPointSize(32);
ui->textEdit->setTextCursor( cursor );

只有调用selectAll()后再调用setFontPointSize()才能生效。 - sonichy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接