2014-12-02 20 views
2

我有許多使用Qt Designer創建的表單。 (Qt 4.8)Qt:在整個表單上應用字體更改

我想改變所有窗體的字體...從某處。

在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很複雜......我不知道如何爲表單設置它,或者如果它不會減慢很多事情......它將如何與不同的樣式表進行交互的形式有...

+0

您可以重複throguth所有小工具和它的孩子們設置正確的字體。 – 2014-12-03 13:08:11

回答

0

使用樣式表...

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

'無法解析應用程序樣式表 – 2015-10-15 20:42:41

相關問題