首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >QLabel & QComboBox setFont不工作

QLabel & QComboBox setFont不工作
EN

Stack Overflow用户
提问于 2014-09-25 04:23:05
回答 2查看 2.7K关注 0票数 2

我正在使用Qt框架构建一个支持多种语言的应用程序。默认字体是从StyleSheet加载的。

我重写了paintEvent()方法,除了QLabelQComboBox之外,setFont()方法对所有小部件都正常工作。

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

有谁碰巧看到这个问题,想办法解决这个问题吗?谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-09-25 04:38:49

答案太长了,因为我写了不同的方法,选择最好的给你。

试着做下一个:

创建QListView,自定义它(例如用样式表)

使用数据设置模型,并使用特殊方法将视图设置为QComboBox

setModel()setView()

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

代码语言:javascript
运行
复制
setStyleSheet("font-family: Arial;font-style: normal;font-size: 12pt");

对于标签,您也可以使用样式表、setFont或设置具有适当字体的HTML代码:

代码语言:javascript
运行
复制
  QFont f( "Arial", 14, QFont::Bold);
  label->setFont(f);

使用ComboBox,您可以使用以下示例:

代码语言:javascript
运行
复制
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);

但是它将在弹出菜单中,而不是在标题中将字体安装到您的数据中,因此您也可以使用下面的命令:

代码语言:javascript
运行
复制
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
EN

Stack Overflow用户

发布于 2017-05-14 08:57:09

亲爱的,这已经足够在下面这样做了:

代码语言:javascript
运行
复制
ui->CboxOpisBaza->lineEdit()->setFont(QFont("MS Shell Dlg 2", 12));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26030470

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档