QDialog dialog(this); //QFormLayout form(&dialog); dialog.setWindowTitle(QStringLiteral("应用创建")); QTextEdit *textEdit = new QTextEdit(&dialog); QDialogButtonBox buttonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, Qt::Horizontal, &dialog); buttonBox.button(QDialogButtonBox::Ok)->setText("Export"); //form.addRow(&buttonBox); textEdit->setFixedSize(200,100); dialog.setFixedSize(280,140); QObject::connect(&buttonBox, SIGNAL(accepted()), &dialog, SLOT(accept())); QObject::connect(&buttonBox, SIGNAL(rejected()), &dialog, SLOT(reject())); //调整按钮位置 QVBoxLayout *layout = new QVBoxLayout(this); // 将 OK 按钮和 Cancel 按钮添加到布局管理器中 layout->addWidget(&buttonBox); // 设置布局管理器的对齐方式为底部居中 layout->setAlignment(Qt::AlignBottom | Qt::AlignHCenter); // 将布局管理器应用于对话框 setLayout(layout); 该段代码中,为何“Export”和“Cancel”按钮要出现在弹窗左上侧,该如何改进,使按钮位于弹窗底部并且居中
时间: 2024-04-13 20:31:09 浏览: 210
3-11(Dialog对话框).7z
在您提供的代码中,按钮出现在左上角的原因是因为您将按钮添加到了 `this`(当前对话框所在的父窗口)的布局管理器中,而不是添加到了 `dialog` 对话框中。
要使按钮位于弹窗底部并居中,您需要将按钮添加到 `dialog` 对话框的布局管理器中,而不是父窗口的布局管理器中。
下面是修改后的代码:
```cpp
QDialog dialog(this);
dialog.setWindowTitle(QStringLiteral("应用创建"));
QTextEdit *textEdit = new QTextEdit(&dialog);
QDialogButtonBox buttonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, Qt::Horizontal, &dialog);
buttonBox.button(QDialogButtonBox::Ok)->setText("Export");
// 创建垂直布局管理器
QVBoxLayout *layout = new QVBoxLayout(&dialog);
// 设置布局管理器的对齐方式为底部居中
layout->setAlignment(Qt::AlignBottom | Qt::AlignHCenter);
// 将文本编辑框和按钮盒子添加到布局管理器中
layout->addWidget(textEdit);
layout->addWidget(&buttonBox);
// 将布局管理器应用于对话框
dialog.setLayout(layout);
textEdit->setFixedSize(200, 100);
dialog.setFixedSize(280, 140);
QObject::connect(&buttonBox, SIGNAL(accepted()), &dialog, SLOT(accept()));
QObject::connect(&buttonBox, SIGNAL(rejected()), &dialog, SLOT(reject()));
dialog.exec();
```
在上述代码中,我们将按钮盒子 `buttonBox` 添加到了 `dialog` 对话框的布局管理器中,并设置布局管理器的对齐方式为底部居中。还添加了文本编辑框 `textEdit` 到布局管理器中。
通过这种方式,按钮将位于弹窗底部并居中。同时,文本编辑框也被添加到了布局管理器中,以保持整体布局的一致性。
阅读全文