我想要一个更大的QMessageBox和居中的文本,但是当我通过样式表增加它的大小时,它会是这样的:
如果我能给它一些垫子或毛边,它将是固定的,但我不能。
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();
}
我想给这个QLabel中的每个setText( QMessageBox::Warning& setText)赋予不同的css属性。
发布于 2020-07-01 06:59:48
我在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.
发布于 2020-06-30 08:20:33
您可以通过其对象名在小部件中寻址特定的子部件:
QLabel#MyLabel {style。}
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,它们非常强大和动态!
顺便说一句:“你的试验已经结束了,请购买一个计划。”
https://stackoverflow.com/questions/62651555
复制相似问题