我有一個組合框與多個複選框項目,我需要能夠遍歷他們,並確定他們是否檢查或甚至更恰當,只要一個項目被選中,有一個事件開火,但我不能讓信號/插槽組合正常工作。Qt5 C++如何訪問模型中的項目以檢查狀態?
下面是我的一些代碼:
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);
}
你試過連接到這個信號:無效化QAbstractItemModel :: dataChanged(常量QModelIndex及左上,常量QModelIndex&bottomRight,常量QVector和角色= QVector ())? –
TheDarkKnight
你嘗試連接什麼信號,並嘗試連接到哪個插槽? – thuga
我試圖遵循這個,但我無法得到它的工作: 「它甚至比那更容易:)沒有任何子類必要:連接(this->型號,信號(dataChanged(常量QModelIndex&,常量QModelIndex&) ),this,SLOT(slot_changed())); with:void MainWindow :: slot_changed(){std :: cout <<「highlight。」<< std :: endl; if(this-> Item-> checkState() == Qt :: Unchecked){std :: cout <<「Unchecked!」<< std :: endl;} else if(this-> Item-> checkState()== Qt :: Checked){std :: cout <<「Checked!」<< std :: endl;}} - David Doria 11年12月8日在12:34「 – T3CHN0CR4T