如何在QMessageBox中为特定标签设置StyleSheet?

我想要一个更大的QMessageBox并在其中居中放置文本,但是当我通过样式表增加它的大小时,它将像这样:

如何在QMessageBox中为特定标签设置StyleSheet?

如果我可以给它一些填充或边距,它将是固定的,但我不能。

void MainWindow::showMsg()
{
    QMessageBox m_MsgBox;
    m_MsgBox.setWindowflags(Qt::Window | Qt::FramelessWindowHint);
    m_MsgBox.setIcon(QMessageBox::Warning);
    m_MsgBox.setText("Your Trial is finished! Please purachase a plan.");
    m_MsgBox.setStandardButtons(QMessageBox::Ok);
    m_MsgBox.setStyleSheet("QLabel{min-width:200 px; font-size: 13px;} QPushButton{ width:25px; font-size: 13px; }");
    if(m_MsgBox.exec() == QMessageBox::Ok)
        m_MsgBox.close();
}

我想为该QMessageBox中的每个QLabel(QMessageBox :: Warning&setText)提供不同的CSS属性。

iCMS 回答:如何在QMessageBox中为特定标签设置StyleSheet?

您可以通过对象名称来解决窗口小部件中的特定子窗口小部件

QLabel#MyLabel {样式...}

QWidget* p_widget = new QWidget;

QLabel* p_label1 = new QLabel;
p_label1->setText("I'm not cool.");

QLabel* p_label2 = new QLabel;
p_label2->setObjectName("coolLabel");
p_label2->setText("I'm VERY cool.");

QVBoxLayout* p_layout = new QVBoxLayout;
p_layout->addWidget(p_label1);
p_layout->addWidget(p_label2);

p_widget->setLayout(p_layout);

p_widget->setStyleSheet("QLabel {color: black;} QLabel#coolLabel {color: red;}");

此示例应该有效。

不过,我想强调一点,通过QSS设置尺寸和布局是一个想法。适应 QLayouts ,它们非常强大且动态!

btw:“您的审判已经结束。请购买一个计划。”

,

我在qt论坛上得到了这个答案:

Only answering to your topic title,if you look into the source code of QMessageBox,every label has a object name,so that should be easy to set different style to them by using ID selector.

text: "qt_msgbox_label"

icon: "qt_msgboxex_icon_label"

informativeText: "qt_msgbox_informativelabel"

Note: These names may change in future versions.
本文链接:https://www.f2er.com/2030670.html

大家都在问