我有很多使用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很复杂....我不知道如何为表单设置它或者它不会减慢很多东西......它将如何与不同的样式表交互其中一种形式有......
答案 0 :(得分:0)
使用样式表...
QString styleSheet = QString("font-size:%1px;").arg(QApplication::font().pointSize());
this->setStyleSheet(styleSheet);