0

プログラムに少し問題があります。設定に設定ファイルを入れました。そこから、チェックする必要があるオブジェクトの名前を取得します (これらは QCheckBox です)。私はこのコードを持っています(コンパイルして実行しますが、「cBox-> setChecked」にあるとクラッシュします):

void Preproc::on_tBtnManual_toggled(bool checked){

if(checked){
    ui->tBtnManual->setText("Systematic");
}else{
    ui->tBtnManual->setText("Manual");
    settings.beginGroup("Preprocessing");
    QStringList keys = settings.childKeys();
    foreach(QString configParam,keys){
        QCheckBox *cBox = ui->gridLayout->findChild<QCheckBox *>(configParam);
        cBox->setChecked(settings.value(configParam).toBool());
    }
 }

}

私は ui->cBox->... を配置しようとしましたが、cBox は ui の子ではないと言われています。qDebug(cBox) の場合、 QObject(0x0) があるので何もありません!

私はQtに少し慣れていないので、簡単なことかもしれません。ありがとう、良い一日を:)

4

2 に答える 2

1

オブジェクトが見つかったことを確認しますか? 私はそうは思いません (名前が違う? レイアウトが間違っている?)。何も見つからない場合、cBox は 0x0 です。ただし、

if (cBox)

cBox->setChecked(settings.value(configParam).toBool());

名前でオブジェクトが見つからなくてもクラッシュしなくなります。

于 2013-06-07T14:11:51.057 に答える
0

名前 (configParam の内容) は正しいですか? QApplicationから検索を試すことができます

QApplication::instance()->findChild<QCheckBox *>(configParam);

findChild メソッドは再帰的な検索を実行し、オブジェクトがヒラチエに存在する場合、それを見つけます。オブジェクトが見つからない場合は、次の可能性があります。

  • オブジェクトが存在しません
  • オブジェクトには別の名前があります
  • オブジェクトまたはその祖先の 1 つに (NULL) 親がありません

.ui ファイルのチェック ボックスの部分を投稿できますか? それは役に立ちます。

于 2013-06-07T14:16:48.827 に答える