QGridLayout* layout = new QGridLayout(this); // 第一行:宽度 QLabel* label1 = new QLabel("宽度:", this); numberEdit1=new QLineEdit(this); layout->addWidget(label1, 0, 0); layout->addWidget(numberEdit1, 0, 1); // 第二行:高度 QLabel* label2 = new QLabel("高度:", this); numberEdit2=new QLineEdit(this); layout->addWidget(label2, 1, 0); layout->addWidget(numberEdit2, 1, 1); // 第三行:文件名 QLabel* label3 = new QLabel("文件名:", this); numberEdit3=new QLineEdit(this); layout->addWidget(label3, 2, 0); layout->addWidget(numberEdit3, 2, 1); numberEdit1->setFixedWidth(100); // 设置宽度 numberEdit1->setFixedHeight(30); // 设置高度 numberEdit2->setFixedWidth(100); // 设置宽度 numberEdit2->setFixedHeight(30); // 设置高度 numberEdit3->setFixedWidth(200); // 设置宽度 numberEdit3->setFixedHeight(30); // 设置高度 QDialogButtonBox *buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, this); layout->addWidget(buttonBox); connect(buttonBox, &QDialogButtonBox::accepted, this, &QDialog::accept); connect(buttonBox, &QDialogButtonBox::rejected, this, &QDialog::reject); setLayout(layout); 如何使下面的两个按键自动居中?
时间: 2024-04-14 15:30:11 浏览: 182
要实现将两个按钮自动居中,你可以使用 `QHBoxLayout` 来包裹 `QDialogButtonBox`,然后将这个水平布局添加到 `QGridLayout` 中。以下是修改后的示例代码:
```cpp
QDialogButtonBox *buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, this);
QHBoxLayout *buttonLayout = new QHBoxLayout();
buttonLayout->addWidget(buttonBox);
// 创建一个空白的占位符 QLabel 来推动按钮居中
QLabel* spacer = new QLabel(this);
spacer->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred);
buttonLayout->addWidget(spacer);
layout->addLayout(buttonLayout, 3, 0, 1, 2); // 将按钮布局添加到 QGridLayout 中
connect(buttonBox, &QDialogButtonBox::accepted, this, &QDialog::accept);
connect(buttonBox, &QDialogButtonBox::rejected, this, &QDialog::reject);
setLayout(layout);
```
在上面的示例中,我们创建了一个 `QHBoxLayout` 对象 `buttonLayout` 并将 `buttonBox` 添加到其中。然后,我们创建了一个空白的 `QLabel` 对象 `spacer`,并将其设置为水平方向上的扩展策略,以推动按钮居中。最后,我们将 `buttonLayout` 添加到 `QGridLayout` 中的第三行,并跨越两个列。
这样就可以实现将两个按钮自动居中的效果。
希望这对你有所帮助!如果还有其他问题,请随时提问。
阅读全文