0

複数のチェックボックス項目を含むコンボボックスがあり、それらを繰り返し処理して、それらがチェックされているかどうか、またはさらに適切に、項目がチェックされるとすぐにイベントを発生させるかどうかを判断できるようにする必要がありますが、取得できないようですシグナル/スロット コンボは正しく機能しています。

これが私のコードの一部です:

void MainWindow::setupQueryBuilder(Ui::MainWindow* ui)
{
    QStandardItemModel* assessmentModel = new QStandardItemModel(3, 1);
    QStandardItem* assessmentPleaseSelect = new QStandardItem();
    QStandardItem* assessmentVisionScreening = new QStandardItem();
    QStandardItem* assessmentHearingAssessment = new QStandardItem();
    QStandardItem* assessmentDevelopmentalAssessment = new QStandardItem();

    assessmentPleaseSelect->setText("Please Select...");
    assessmentPleaseSelect->setFlags(Qt::ItemIsEnabled);
    assessmentPleaseSelect->setData(Qt::CheckStateRole);

    assessmentVisionScreening->setText("Vision Screening");
    assessmentVisionScreening->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled);
    assessmentVisionScreening->setData(Qt::Unchecked, Qt::CheckStateRole);

    assessmentHearingAssessment->setText("Hearing Assessment");
    assessmentHearingAssessment->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled);
    assessmentHearingAssessment->setData(Qt::Unchecked, Qt::CheckStateRole);

    assessmentDevelopmentalAssessment->setText("Developmental Assessment");
    assessmentDevelopmentalAssessment->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled);
    assessmentDevelopmentalAssessment->setData(Qt::Unchecked, Qt::CheckStateRole);

    assessmentModel->insertRow(0, assessmentPleaseSelect);
    assessmentModel->insertRow(1, assessmentVisionScreening);
    assessmentModel->insertRow(2, assessmentHearingAssessment);
    assessmentModel->insertRow(3, assessmentDevelopmentalAssessment);

    ui->SearchAssessmentSelect->setModel(assessmentModel);
}
4

1 に答える 1

2

私はこれを試していませんが、ドキュメントを見ると、signalfor がQStandardItemModel呼び出されitemChanged(QStandardItem *item)ました。あなたがしたいことは、slot名前付き(たとえば)modelItemChanged(QStandardItem *item)を作成connectし、connect(assessmentModel, SIGNAL(itemChanged(QStandardItem *)), this, SLOT(modelItemChanged(QStandardItem *))).

slotこれにより、 an が変更されるたびにモデルがトリガーされるように設定さQStandardItemれ、変更されたアイテムへのポインターが渡されます。modelItemChanged(QStandardItem *item)関数内で にクエリを実行して、その状態を確認できますQStandardItem *item

于 2013-08-20T10:31:05.807 に答える