2

次のようにチェックボックスを生成します。

foreach(QString filt, types){
    QCheckBox *checkbox = new QCheckBox(filt, this);
    checkbox->setChecked(true);
    vbox->addWidget(checkbox);
}

これらのチェックボックスに名前でアクセスする必要がありますが、それらはすべて同じ名前ですか?

彼らが表示するテキストを読む必要があります。

これについてどうすればよいですか?

for ループを実行して i の値をチェックボックスの最後に追加することは可能ですか? 実際には、チェックボックスはチェックボックス[0]、チェックボックス[1]などと呼ばれますか?

編集:

コードを次のように変更しました。

for(int i=0; i<types.count(); ++i)
{
    QString filt = types[i];
    *checkboxCount = *checkboxCount + 1;
    QCheckBox *typecheckbox[i] = new QCheckBox(filt, this);
    typecheckbox[i]->setChecked(true);
    vbox->addWidget(typecheckbox[i]);
}

これはチェックボックスに動的に名前を付ける方法だと思ったので、それらをループしてテキスト値を取得できます。

この行で「可変サイズのオブジェクトが初期化されていない可能性があります」というエラーが表示されますQCheckBox *typecheckbox[i] = new QCheckBox(filt, this);

ソリューション/代替アプローチへのアイデアはありますか?

4

1 に答える 1

2

後でチェックボックスにアクセスしたい場合は、次のようにfind children メソッドを使用できます。

QStringList myStringList;
QList<QCheckBox *> list = vbox->findChildren<QCheckBox *>();
foreach (QCheckBox *checkBox, list) {
    if (checkBox->isChecked())
        myStringList.append(checkBox->text());
}
于 2014-07-21T01:19:08.880 に答える