0

在我的 qt C++ gui 应用程序中,我有一个带有 3 个按钮和一些标准功能的 QMessageBox。我想用样式表和字体来装饰所有这些,什么不是。

我能够成功地做到以下几点 -

一世。设置 MessageBox 背景。

ii. 设置按钮背景。

void MainWindow::on_pushButton_clicked()
{
    QMessageBox msgbox;
    msgbox.setInformativeText("YOLO");
    msgbox.setStandardButtons(QMessageBox::Ok|QMessageBox::No|QMessageBox::Cancel);
    msgbox.setWindowFlags(Qt::FramelessWindowHint);
    msgbox.setStyleSheet("QMessageBox { background-image: url(:/res/bk.jpg) }");
    msgbox.button(QMessageBox::Ok)->setStyleSheet("QPushButton { background-image: url(:/res/green_bk.jpg) }");
    msgbox.button(QMessageBox::No)->setStyleSheet("QPushButton { background-image: url(:/res/red_bk.jpeg) }");
    msgbox.exec();
}

但我被困在如何为 InformativeText 字段设置字体(类型和大小),以及如何使其粗体。我已经提到了InformativeText 属性,但我无法解决问题。关于如何实现这一目标的任何想法?谢谢。

作为附加查询,我可以更改按钮的字体(类型和大小)并设置粗斜体等吗?

编辑

我对我的代码进行了以下更改,结果令人费解,

QFont font;
font.setBold(true);
msgbox.setFont(font);

这样做之后,我的信息文本变成了粗体,我的取消按钮变成了粗体。但是 Ok 和 No 按钮是正常的(非粗体)。如果我删除了两个按钮的 setStylesheets,那么它们才会变得粗体(这是没用的,因为我想要背景图像)。

有什么想法可以在所有这些方面产生协同作用???

4

1 回答 1

1

我找到了解决您问题的方法。

QMessageBox msg(QMessageBox::Information,"Hey", "Dude", QMessageBox::Ok);

QFont font;
font.setBold(true);
msg.setFont(font);

msg.button(QMessageBox::Ok)->setFont(font);

msg.exec();
于 2018-10-27T14:48:09.113 回答