首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何调整QMessageBox的大小?

如何调整QMessageBox的大小?
EN

Stack Overflow用户
提问于 2016-06-07 08:38:07
回答 5查看 22.6K关注 0票数 23

我有一台QMessageBox,我希望它大一点。这是一个简单的QMessageBox,有两个标准按钮,Ok和Cancel。问题是,对于我的应用程序来说,它非常小。代码显示如下:

代码语言:javascript
运行
复制
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;}

我尝试了几种方法来增加大小:

代码语言:javascript
运行
复制
msg.setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);

msg.setSizePolicy(QSizePolicy::Maximum,QSizePolicy::Maximum);

msg.setFixedHeight(600);
msg.setFixedWidth(600);

我甚至清除并重建了,它编译了所有的东西,但没有任何东西生效……

你知道如何“手动”设置QMessageBox大小吗?谢谢。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2016-06-07 08:57:26

您可以编辑标签的css:

代码语言:javascript
运行
复制
msg.setStyleSheet("QLabel{min-width: 700px;}");

您可以类似地编辑按钮的css以添加边距或使其更大。

例如:

代码语言:javascript
运行
复制
msg.setStyleSheet("QLabel{min-width:500 px; font-size: 24px;} QPushButton{ width:250px; font-size: 18px; }");

还有一个trick mentioned

代码语言:javascript
运行
复制
QSpacerItem* horizontalSpacer = new QSpacerItem(800, 0, QSizePolicy::Minimum, QSizePolicy::Expanding);
QGridLayout* layout = (QGridLayout*)msg.layout();
layout->addItem(horizontalSpacer, layout->rowCount(), 0, 1, layout->columnCount());

但这似乎并不适用于所有人。

票数 39
EN

Stack Overflow用户

发布于 2018-05-27 13:49:15

Coyotte508的回答导致我的布局严重偏离中心,并且在不同的宽度上被切断。在进一步的搜索中,我找到了this线程,它解释了一个更好的解决方案。

从本质上讲,messagebox的布局是一个网格,因此您可以向其添加一个SpacerItem来控制宽度。下面是来自该链接的c++代码示例:

代码语言:javascript
运行
复制
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();
票数 4
EN

Stack Overflow用户

发布于 2019-03-05 14:42:30

您可以将QMessageBox子类化并按如下方式重新实现resize事件处理程序:

代码语言:javascript
运行
复制
void MyMessageBox::resizeEvent(QResizeEvent *Event)
{
    QMessageBox::resizeEvent(Event);
    this->setFixedWidth(myFixedWidth);
    this->setFixedHeight(myFixedHeight);
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37668820

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档