私のアプリケーションでは複数のフィールドを動的に追加して選択しようとしました。 Unfortunaleyは、私はいくつかのアイコンが持っていることを、重複を取り除くことはできませんよ。QVBoxLayoutにウィジェットが重複しないようにする
私は次のコードでそれらを追加:pathHolderLayout
はQVBoxLayoutです
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++;
}
。
何か助けていただければ幸いです。
これは、通常、レイアウト制約が階層まで正しくダイアログにプッシュアップされないことを意味します。問題の最小限の実例を作成できますか? – E4z9
@ E4z9ソースコード全体[ここ](https://github.com/minils/EasySlideshow)が見つかります。 – minils
をサイドコメントとして使用するには、lambdas/C++ 11を使用して 'findChildren(" browseButton ")などを取り除く必要があります11:addPathEditで' connect(browseButton、&QPushButton :: clicked、lineEdit (void)」をクリックし、行編集を引数として取得するように「slot」を変更します。void SettingsDialog :: on_browse_button_clicked(QLineEdit * lineEdit) –
E4z9