2014-09-25 323 views
1

我使用Qt框架來構建支持多種語言的應用程序。 默認字體從StyleSheet加載。QLabel&QComboBox setFont不起作用

我重寫paintEvent()方法,並setFont()方法的工作原理確定的所有部件,除了QLabelQComboBox

對於QComboBox,所選項目具有正確的字體,但下拉列表項目使用的是默認字體。 Qt手冊中說setFont會將comboBox按鈕和comboBox彈出列表的字體設置爲字體。

任何人碰巧看到這個問題,並有一個想法來解決這個問題?謝謝。

回答

0

答案很長,因爲我寫了不同的方法,選擇最適合你的方法。

嘗試下做:

創建QListView,對其進行自定義(與樣式爲例)與您的數據

集模型,並用特殊的方法將視圖設置爲QComboBox

setModel()setView()

http://qt-project.org/doc/qt-4.8/qcombobox.html#setView

setStyleSheet("font-family: Arial;font-style: normal;font-size: 12pt"); 

對於標籤,您可以使用樣式表也相同,setFont或只設置HTML代碼與合適的字體:

QFont f("Arial", 14, QFont::Bold); 
    label->setFont(f); 

隨着組合框,你可以用這個例子:

QStringList stringList; 
stringList << "#hello" << "#quit" << "#bye"; 
QStringListModel *mdl = new QStringListModel(stringList); 

QFont comboFont("Arial",16,-1,true); 
QListView *vw = new QListView; 
vw->setFont(comboFont); 

ui->comboBox->setModel(mdl); 
ui->comboBox->setView(vw); 

但它會安裝字體到您的數據彈出菜單中,而不是在標題中,所以你也可以使用下一個:

QFont comboFont("Arial",16,-1,true); 
for(int i = 0; i< ui->comboBox->count(); i++) 
{ 
    ui->comboBox->setItemData(i,QVariant(comboFont),Qt::FontRole); 
} 
ui->comboBox->setFont(comboFont); 

Witsh this code snippet y你會得到這個字體的彈出菜單和標題,你不需要創建模型和視圖。

0

親愛的,它是足夠做財產:

ui->CboxOpisBaza->lineEdit()->setFont(QFont("MS Shell Dlg 2", 12));