我正在使用Qt
Framework来构建支持多种语言的应用。
默认字体是从StyleSheet
加载的。
我覆盖了paintEvent()
方法,setFont()
方法适用于除QLabel
和QComboBox
之外的所有小部件。
对于QComboBox
,所选项目具有正确的字体,但下拉列表项目使用默认字体。 Qt
手册说setFont
会将comboBox
按钮和comboBox
弹出列表的字体设置为字体。
任何人都碰巧看到这个问题,并有想法解决这个问题?感谢。
答案 0 :(得分: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);
使用ComboBox,您可以使用它,例如:
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);
通过此代码段,您可以获得带有此字体的弹出式菜单和标题,而且您不需要创建模型和视图。
答案 1 :(得分:0)
亲爱的,这就足够了:
ui->CboxOpisBaza->lineEdit()->setFont(QFont("MS Shell Dlg 2", 12));