自定义对话框的布局

时间:2015-03-09 09:41:28

标签: qt

在我的Qt桌面应用程序中,我需要一个对话框供用户输入一些数据。所以我选择:新文件| Qt |设计器表单类,然后是对话框,按钮底部并适当地命名。

在新对话框的构造函数中,我创建了一些标签和线条编辑,并将它们添加到网格布局中。像这样:

ui->setupUi(this);

partNoLabel = new QLabel(tr("&Part No:"));
partDescLabel = new QLabel(tr("&Description:"));

partNoLineEdit = new QLineEdit();
partDescLineEdit = new QLineEdit();

partNoLabel->setBuddy(partNoLineEdit);
partDescLabel->setBuddy(partDescLineEdit);

supplierLabel = new QLabel(tr("Supplier"));
supPartNoLabel = new QLabel(tr("Part No"));
supplierLineEdit = new QLineEdit();
supPartNoLineEdit = new QLineEdit();

supplierLabel->setBuddy(supplierLineEdit);
supPartNoLabel->setBuddy(supPartNoLineEdit);


QGridLayout *dlgLayout = new QGridLayout;
dlgLayout->addWidget(partNoLabel, 0, 0);
dlgLayout->addWidget(partNoLineEdit, 0, 1);
dlgLayout->addWidget(partDescLabel, 1, 0);
dlgLayout->addWidget(partDescLineEdit, 1, 1);

dlgLayout->addWidget(supplierLabel, 2, 0);
dlgLayout->addWidget(supplierLineEdit, 2, 1);
dlgLayout->addWidget(supPartNoLabel, 3, 0);
dlgLayout->addWidget(supPartNoLineEdit, 3, 1);

setLayout(dlgLayout);

setWindowTitle("New part");

虽然显示了 - 但看起来很糟糕:

dialog showing buttons over edit boxes

当调整大小时,看起来更糟:

resized dialog showing buttons over edit boxes

这显然是不可接受的,我该如何解决这个问题,或者我该怎么做呢?

修正版:

我遵循了GáborAngyal的建议并手动完成,删除并在代码中添加了一个按钮框。我还改为使用本文所述的FormLayout:http://doc.qt.digia.com/qq/qq25-formlayout.html

结果表格如下:

fixed dialog

仍然需要一两个调整,但至少按钮位于正确的位置:D。

1 个答案:

答案 0 :(得分:2)

问题是你手动创建了一个布局,但确实为它添加了按钮框。我建议您使用设计器创建整个表单,或者手动完成所有操作,但不要混用两者。

有设计师

  • 在设计器中打开.ui文件。
  • 右键单击设置网格布局。
  • 拖放文本框。

<强>手册