【发布时间】:2015-04-26 11:02:59
【问题描述】:
我有应用了自定义样式表的 Qt 应用程序(以及一般的所有小部件),此样式表中包含自定义字体。但是当尝试获取某些小部件的字体时,font() 方法返回不同的字体。我想获得由样式表设置的QWidget 的字体。 font() 方法总是返回全局系统字体或setFont() 设置的字体,而不是setStyleSheet() 设置的用于在小部件中绘制的字体。我需要字体根据字体大小进行一些计算。我使用 Qt 4.6。如何获得样式表设置的小部件的真实字体(即在应用程序运行时显示)?
经过一些调查,我发现如果我将定义的样式表应用于某些小部件,我可以使用myWidget->font() 方法获得正确的字体信息(由样式表定义)。此外,当我将样式表设置为整个MainWindow 时,我可以使用font() 方法为MainWindow 包含的所有小部件获取正确的字体信息。但是,当我将样式表设置为QApplication 的实例时,所有小部件的font() 方法都会返回默认字体或setFont() 先前设置的字体。为什么会这样?
【问题讨论】:
-
你是在 Qt Designer 中创建你的小部件吗?
-
我将自定义样式表设置为整个应用程序。此样式表描述了我的应用程序上几个小部件的样式。因此,例如,我在我的应用程序中为所有 QGraphicsView 对象设置自定义背景颜色和字体: app.setStyleSheet("font-family: Arial;font-style: normal;font-size: 12pt;font-weight: bold;" );
-
找到路了吗?
-
一般来说,没有。我可以使用
setFont()方法为我在样式表中设置的某些小部件设置相同的字体。在此之后,我可以得到这个字体并进行所有需要的计算。但我需要确保使用样式表设置的字体和使用setFont()方法设置的字体是相同的。这种方法需要一些额外的同步。
标签: c++ qt fonts qtstylesheets