gpt4 book ai didi

c++ - QLabel & QComboBox setFont 不起作用

转载 作者:太空宇宙 更新时间:2023-11-04 13:45:50 27 4
gpt4 key购买 nike

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

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

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

有人碰巧看到这个问题并想出解决办法吗?谢谢。

最佳答案

答案很长,因为我写了不同的方法,选择适合你的。

尝试下一步:

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

使用您的数据设置模型并使用特殊方法将 View 设置为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);

但它会在弹出菜单中为您的数据安装字体,而不是在标题中,因此您也可以使用 next:

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

使用此代码片段,您将获得带有此字体的弹出菜单和标题,并且您不需要创建模型和 View 。

关于c++ - QLabel & QComboBox setFont 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26030470/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com