c++ - Qt:フォーム全体にフォントの変更を適用する

原文 c++ forms qt fonts

Qt Designerを使用して作成したフォームがいくつかあります。 (Qt 4.8)

すべてのフォームのフォントをどこかから変更したい...

Windowsでは、

QApplication::setFont(font);


完璧に動作します。

残念ながらバグがあるようです(このbug reportが正確に関連しているかどうかはわかりません)...そして、QApplication::setFont(font);はOS Xに移植された同じqtアプリでは何もしません。

だから...私はOS Xのためにそれを手動で行っています。影響を受けるすべてのUIについて、信号を送信してスロットを作成し、インターフェースのフォントを更新します。

私の質問:

フォーム全体のフォントを変更するにはどうすればよいですか?テキストを含む個々のアイテムごとに変更できますが、非常に多くあります...そしてもっと良い方法があるはずです。

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 ....を使用するのは複雑です。フォームに設定する方法や、処理速度が大幅に低下しないかどうかはわかりません...そして、どのようにして別のスタイルシートと相互作用するのでしょうか。フォームの...
答え
スタイルシートを使用...

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

java - 最小の「XOR」演算でバイナリマトリックスを再作成する

c++ - doxygenの「ファイルドキュメント」リストから「README.md」を除外します

java - Android Gstreamer SDKでANativeWindow_lockがエラー-22を返す

c++ - C++プロキシDLL(64ビット)

c++ - 誤った値を返す二重ハッシュ関数

c++ - OpenCVでのレーン検出器分割線C++

c++ - Qtでマウスイベントが発生したときに呼び出される関数の宣言

c++ - リンクリストで変更されたデータはメモリに反映されません

c++ - C++とFortranの並列MM速度差ループタイリング

c++ - カスタムデータ型は、可変サイズの効率のための可能で実行可能なオプションですか?