Qt:在整个表单上应用字体更改

时间:2014-12-02 19:33:09

标签: c++ forms qt fonts

我有很多使用Qt Designer创建的表单。 (Qt 4.8)

我想从某个地方更改所有表单的字体。

在Windows中,

QApplication::setFont(font);

完美无缺。

不幸的是,似乎有一个错误(我不知道这个bug report是否完全相关)...并且QApplication::setFont(font);在移植到的同一个qt app中没有做任何事情OS X。

所以...我正在为OS X手动完成。发出信号并创建一个插槽来更新界面字体,适用于所有受影响的人。

我的问题:

如何更改整个表单的字体?我可以为包含文本的每个项目更改它,但是它们中有很多......而且似乎应该有更好的方法。

SomeForm.cpp

#include "ui_SomeForm.h"

SomeForm::SomeForm(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::SomeForm)
{
    ui->setupUi(this);
...
#if !defined (Q_OS_WIN32)
    connect(&source, SIGNAL(fontChanged(QFont)),
            this, SLOT(refreshFonts()));
#endif
}

#if !defined (Q_OS_WIN32)
void SomeForm::refreshFonts()
{
    ui->btn1->setFont(QApplication::font());
    ui->btn2->setFont(QApplication::font());
    ui->lbl1->setFont(QApplication::font());
    ui->lbl2->setFont(QApplication::font());
......
}
#endif

这样可行,但它可能是很多项目......我想要的是像

    ui->setFont(QApplication::font());

    ui->SomeForm->setFont(QApplication::font());

但这样的事情给我一个错误......

如何对整个ui应用更改?

他会回答样式表吗?但是使用QApplication :: font很复杂....我不知道如何为表单设置它或者它不会减慢很多东西......它将如何与不同的样式表交互其中一种形式有......

1 个答案:

答案 0 :(得分:0)

使用样式表...

QString styleSheet = QString("font-size:%1px;").arg(QApplication::font().pointSize());
this->setStyleSheet(styleSheet);