首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在QMessageBox中设置多个复选框

在QMessageBox中设置多个复选框
EN

Stack Overflow用户
提问于 2021-08-10 20:10:58
回答 1查看 81关注 0票数 1

我正在尝试在一个QMessageBox中设置两个QCheckBox。只出现第二个复选框。我该如何实现这一点?只创建一个定制的QDialog是不是更好?

代码语言:javascript
复制
    void TextEditor::actionConfigure_triggered()
    {
        QCheckBox *checkbox = new QCheckBox("Cursor to end of file");
        QCheckBox *geometryCheckBox = new QCheckBox("Save and restore geometry");
        QMessageBox msgBox(this);
        msgBox.setStandardButtons(QMessageBox::Apply | QMessageBox::Discard | QMessageBox::Reset | QMessageBox::RestoreDefaults);
        msgBox.setDefaultButton(QMessageBox::Apply);
        msgBox.setCheckBox(checkbox);
        msgBox.setCheckBox(geometryCheckBox);
        checkbox->setToolTip("Option to move cursor to end of text on file open");
        geometryCheckBox->setToolTip("Option to save and restore geometry on open / close");
        int ret = msgBox.exec();
        switch (ret) {
          case QMessageBox::Apply:
              // Save was clicked
              break;
          case QMessageBox::Discard:
              // Don't Save was clicked
              break;
          case QMessageBox::Reset:
            // Cancel was clicked
            break;
          case QMessageBox::RestoreDefaults:
            // Restore defaults
            break;
          default:
            // should never be reached
            break;
        }
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-10 21:37:30

默认情况下,QMessageBox只允许放置QCheckBox,因此如果添加新的QCheckBox,它将替换以前的one。一种可能的解决方案是直接将QCheckBox注入布局:

代码语言:javascript
复制
QCheckBox *checkbox = new QCheckBox("Cursor to end of file");
QCheckBox *geometryCheckBox = new QCheckBox("Save and restore geometry");
QMessageBox msgBox(this);
msgBox.setStandardButtons(QMessageBox::Apply | QMessageBox::Discard | QMessageBox::Reset | QMessageBox::RestoreDefaults);
msgBox.setDefaultButton(QMessageBox::Apply);
checkbox->setToolTip("Option to move cursor to end of text on file open");
geometryCheckBox->setToolTip("Option to save and restore geometry on open / close");
msgBox.setCheckBox(checkbox);

QGridLayout *grid = qobject_cast<QGridLayout *>(msgBox.layout());
int index = grid->indexOf(checkbox);
int row, column, rowSpan, columnSpan;
grid->getItemPosition(index, &row, &column, &rowSpan, &columnSpan);
grid->addWidget(geometryCheckBox, row + 1,  column, rowSpan, columnSpan);

int ret = msgBox.exec();
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68732970

复制
相关文章

相似问题

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