QLabel& QComboBox setFont不起作用

时间:2014-09-25 04:23:06

标签: c++ qt stylesheet qcombobox qlabel

我正在使用Qt Framework来构建支持多种语言的应用。 默认字体是从StyleSheet加载的。

我覆盖了paintEvent()方法,setFont()方法适用于除QLabelQComboBox之外的所有小部件。

对于QComboBox,所选项目具有正确的字体,但下拉列表项目使用默认字体。 Qt手册说setFont会将comboBox按钮和comboBox弹出列表的字体设置为字体。

任何人都碰巧看到这个问题,并有想法解决这个问题?感谢。

2 个答案:

答案 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));