0

我尝试动态添加更多字段以在我的应用程序中选择多个路径。不幸的是,我无法摆脱某些图标的重叠:

在此处输入图像描述

我使用以下代码添加它们:

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++;
}

pathHolderLayoutQVBoxLayout在哪里。

任何帮助表示赞赏。

4

1 回答 1

3

Qt 中的布局有一个“尺寸约束”,它定义了布局的 minimumSize/maximumSize/sizeHint,取决于它们内容的 minimumSize/maximumSize/sizeHint。

默认大小约束是QLayout::SetDefaultConstraint,定义为“主小部件的最小尺寸设置为 minimumSize(),除非小部件已经具有最小尺寸。”

您(对话框的)顶级布局具有默认大小约束(在 .ui 文件中),并且您为对话框(在 .ui 文件中)设置了最小尺寸,因此该约束实际上根本不做任何事情。

要解决您的问题,您要么必须删除对话框的最小大小(例如,选择 .ui 编辑器的属性值并单击后退箭头),要么将顶级布局的大小约束设置为QLayout::SetMinimumSize.

于 2016-12-19T08:23:14.940 回答