2014-09-25 325 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));