避免 QVBoxLayout 中的 Widgets 重叠
Avoid overlapping of Widgets in QVBoxLayout
我试图在我的应用程序中向 select 多个路径动态添加更多字段。不幸的是,我无法摆脱某些图标的重叠:
我用下面的代码添加它们:
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。
感谢任何帮助。
Qt 中的布局有一个“size constraint”,它定义了布局的 minimumSize/maximumSize/sizeHint,具体取决于其内容的 minimumSize/maximumSize/sizeHint。
默认大小约束为QLayout::SetDefaultConstraint
,定义为"The main widget's minimum size is set to minimumSize(), unless the widget already has a minimum size."
您的(对话框的)顶级布局具有默认大小限制(在 .ui 文件中),并且您为对话框设置了最小大小(在 .ui文件),因此约束实际上什么都不做。
要解决您的问题,您要么必须删除对话框的最小尺寸(例如 select .ui 编辑器的 属性 的值,然后单击后退箭头),或者将顶层布局的大小约束设置为QLayout::SetMinimumSize
.
我试图在我的应用程序中向 select 多个路径动态添加更多字段。不幸的是,我无法摆脱某些图标的重叠:
我用下面的代码添加它们:
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。
感谢任何帮助。
Qt 中的布局有一个“size constraint”,它定义了布局的 minimumSize/maximumSize/sizeHint,具体取决于其内容的 minimumSize/maximumSize/sizeHint。
默认大小约束为QLayout::SetDefaultConstraint
,定义为"The main widget's minimum size is set to minimumSize(), unless the widget already has a minimum size."
您的(对话框的)顶级布局具有默认大小限制(在 .ui 文件中),并且您为对话框设置了最小大小(在 .ui文件),因此约束实际上什么都不做。
要解决您的问题,您要么必须删除对话框的最小尺寸(例如 select .ui 编辑器的 属性 的值,然后单击后退箭头),或者将顶层布局的大小约束设置为QLayout::SetMinimumSize
.