我尝试动态添加更多字段以在我的应用程序中选择多个路径。不幸的是,我无法摆脱某些图标的重叠:
我使用以下代码添加它们:
void SettingsDialog::addPathEdit(QString dir)
{
if (amountPaths > maxAmountPaths) {
showError(tr("Cannot add more than %1 paths").arg(maxAmountPaths));
return;
}
QHBoxLayout *hLayout = new QHBoxLayout();
hLayout->setObjectName("pathLine");
hLayout->setSizeConstraint(QHBoxLayout::SetMinimumSize);
QLineEdit *lineEdit = new QLineEdit(dir);
lineEdit->setMinimumHeight(25);
lineEdit->setObjectName("path");
hLayout->addWidget(lineEdit);
QPushButton *browseButton = new QPushButton(tr("Browse..."));
browseButton->setMinimumHeight(25);
browseButton->setObjectName("browseButton");
hLayout->addWidget(browseButton);
connect(browseButton, SIGNAL(clicked()), this, SLOT(on_browse_button_clicked()));
ui->pathHolderLayout->addLayout(hLayout);
amountPaths++;
}
其中pathHolderLayout
是QVBoxLayout。
感谢任何帮助。
答案 0 :(得分:1)
Qt中的布局有一个" size constraint"它定义了布局的minimumSize / maximumSize / sizeHint,具体取决于其内容的minimumSize / maximumSize / sizeHint。
默认大小约束为QLayout::SetDefaultConstraint
,定义为"主要小部件的最小大小设置为minimumSize(),除非小部件已具有最小大小"
您的顶级布局(对话框)具有默认大小约束(在.ui文件中),并且您为对话框设置了最小大小(在.ui文件中),因此约束在所有
要解决您的问题,您必须删除对话框的最小大小(例如,选择.ui编辑器的属性值并单击后退箭头),或者将顶级布局的大小限制设置为{{ 1}}。