我有一台QMessageBox
,我希望它大一点。这是一个简单的QMessageBox
,有两个标准按钮,Ok和Cancel。问题是,对于我的应用程序来说,它非常小。代码显示如下:
QMessageBox msg;
msg.setText("Whatever");
msg.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel);
msg.setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);
int ret = msg.exec();
switch (ret) {
case QMessageBox::Ok:
ui->textEdit->clear();
break;
case QMessageBox::Cancel:
break;}
我尝试了几种方法来增加大小:
msg.setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);
msg.setSizePolicy(QSizePolicy::Maximum,QSizePolicy::Maximum);
msg.setFixedHeight(600);
msg.setFixedWidth(600);
我甚至清除并重建了,它编译了所有的东西,但没有任何东西生效……
你知道如何“手动”设置QMessageBox大小吗?谢谢。
发布于 2016-06-07 08:57:26
您可以编辑标签的css:
msg.setStyleSheet("QLabel{min-width: 700px;}");
您可以类似地编辑按钮的css以添加边距或使其更大。
例如:
msg.setStyleSheet("QLabel{min-width:500 px; font-size: 24px;} QPushButton{ width:250px; font-size: 18px; }");
还有一个trick mentioned
QSpacerItem* horizontalSpacer = new QSpacerItem(800, 0, QSizePolicy::Minimum, QSizePolicy::Expanding);
QGridLayout* layout = (QGridLayout*)msg.layout();
layout->addItem(horizontalSpacer, layout->rowCount(), 0, 1, layout->columnCount());
但这似乎并不适用于所有人。
发布于 2018-05-27 13:49:15
Coyotte508的回答导致我的布局严重偏离中心,并且在不同的宽度上被切断。在进一步的搜索中,我找到了this线程,它解释了一个更好的解决方案。
从本质上讲,messagebox的布局是一个网格,因此您可以向其添加一个SpacerItem来控制宽度。下面是来自该链接的c++代码示例:
QMessageBox msgBox;
QSpacerItem* horizontalSpacer = new QSpacerItem(500, 0, QSizePolicy::Minimum, QSizePolicy::Expanding);
msgBox.setText( "SomText" );
QGridLayout* layout = (QGridLayout*)msgBox.layout();
layout->addItem(horizontalSpacer, layout->rowCount(), 0, 1, layout->columnCount());
msgBox.exec();
发布于 2019-03-05 14:42:30
您可以将QMessageBox
子类化并按如下方式重新实现resize事件处理程序:
void MyMessageBox::resizeEvent(QResizeEvent *Event)
{
QMessageBox::resizeEvent(Event);
this->setFixedWidth(myFixedWidth);
this->setFixedHeight(myFixedHeight);
}
https://stackoverflow.com/questions/37668820
复制相似问题