I have a table with some rows, each row has a checkbox in the first column. This is how I created my table:
void mytable::setup(QMap<int, Data> mydata){
ui.table->setHorizontalHeaderItem(0, new QTableWidgetItem(" "));
ui.table->setHorizontalHeaderItem(1, new QTableWidgetItem("SECOND"));
ui.table->setRowCount(mydata.size());
ui.table->setColumnCount(2);
for (int i = 0; mydata.size() > i; i++){
Data dt = mydata.value(i);
QTableWidgetItem *itemCheckbox = new QTableWidgetItem(" ");
itemCheckbox->setCheckState(Qt::Unchecked);
ui.table->setItem(i, 0, itemCheckbox);
itemCheckbox->setData(Qt::ItemDataRole::UserRole, dt.doid);
QTableWidgetItem *itemsecond = new QTableWidgetItem("SECOND");
itemsecond->setData(Qt::ItemDataRole::DisplayRole, mydata.id);
ui.table->setItem(i, 1, itemsecond);
}
}
Once I uncheck a certain checkbox, I need to check if all the checkboxes are unchecked. This is my algorithm:
void mytable::checkbox_checked(QTableWidgetItem* checkbox) {
if (checkbox->column() == 0) {
if (checkbox->checkState() == 2) {
//do something;
}
else if (checkbox->checkState() == 0) {
bool one_checked = false;
for (int k = 0; k < ui.table->rowCount(); k++) {
if (ui.table->item(k, 0)->checkState() == 2) {
one_checked = true;
break;
}
}
if (one_checked == false) {
//do somethings;
}
}
}
}
This algorithm causes some troubles. Do you have any other solution for this? that would be good if we don't use for
loop.
Aucun commentaire:
Enregistrer un commentaire