for(int i = 0; query.next(); i++){ // Вставляем строку ui->tableWidget->insertRow(i); // Устанавливаем в первую колонку id забирая его из результата SQL-запроса // Эта колонка будет скрыта ui->tableWidget->setItem(i,0, new QTableWidgetItem(query.value(0).toString())); // Создаём элемент, который будет выполнять роль чекбокса QTableWidgetItem *item = new QTableWidgetItem(); item->data(Qt::CheckStateRole); // Проверяем, на статус 1, если 1, то выставляем состояние чекбокса в Checked, иначе в Unchecked if(query.value(1) == 1){ item->setCheckState(Qt::Checked); } else { item->setCheckState(Qt::Unchecked); } // Устанавливаем чекбокс во вторую колонку ui->tableWidget->setItem(i,1, item); // Далее забираем все данные из результата запроса и устанавливаем в остальные поля ui->tableWidget->setItem(i,2, new QTableWidgetItem(query.value(2).toString())); }
C++ (Qt)connect(ui->tableWidget, SIGNAL(itemChanged(QTableWidgetItem *)), this, SLOT(check(QTableWidgetItem *))
C++ (Qt)void check(QTableWidgetItem *item);
C++ (Qt)//делаем проверку на нужный нам столбецif (item->column() != 1) // НЕ столбец с галкой return;// получаем состояние галкиbool state = item->checkState() == Qt::Checked;// узнаем ID записиint row = item->row(); // узнали строку на которой галка находитсяQTableWidgetItem *idItem = QTableWidget->item(row, 0); // получили элемент содержащий ID в этой строкеint id = idItem->data().toInt(); получили ID // используем полученные id и state для создания целевых SQL-запросов
C++ (Qt)#ifndef MAINWINDOW_H#define MAINWINDOW_H #include <QMainWindow> namespace Ui {class MainWindow;} class MainWindow : public QMainWindow{ Q_OBJECT public: explicit MainWindow(QWidget *parent = 0); ~MainWindow(); private slots: void on_action_19_triggered(); void on_action_17_triggered(); void check(); private: Ui::MainWindow *ui; void cleartable();};#endif // MAINWINDOW_H
C++ (Qt)QObject::connect(ui->tableWidget, SIGNAL(itemClicked(QTableWidgetItem *)), this, SLOT(check(QTableWidgetItem *));
C++ (Qt) // Выполняем заполнение QTableWidget записями с помощью цикла for(int i = 0; query.next(); i++){ // Вставляем строку ui->tableWidget->insertRow(i); // Устанавливаем в первую колонку id забирая его из результата SQL-запроса // Эта колонка будет скрыта ui->tableWidget->setItem(i,0, new QTableWidgetItem(query.value(0).toString())); // Создаём элемент, который будет выполнять роль чекбокса QTableWidgetItem *item = new QTableWidgetItem(); item->data(Qt::CheckStateRole); // Проверяем, на статус 1, если 1, то выставляем состояние чекбокса в Checked, иначе в Unchecked if(query.value(1) == 1){ item->setCheckState(Qt::Checked); } else { item->setCheckState(Qt::Unchecked); } // Устанавливаем чекбокс во вторую колонку ui->tableWidget->setItem(i,1, item); //QObject::connect(ui->tableWidget, SIGNAL(itemClicked(QTableWidgetItem *)), this, SLOT(check(QTableWidgetItem *)); // Далее забираем все данные из результата запроса и устанавливаем в остальные поля ui->tableWidget->setItem(i,2, new QTableWidgetItem(query.value(2).toString())); //ui->tableWidget->setItem(i,3, new QTableWidgetItem(query.value(3).toString())); //ui->tableWidget->setItem(i,4, new QTableWidgetItem(query.value(4).toString())); } //connect(ui->tableWidget, SIGNAL(itemChanged(QTableWidgetItem *)), this, SLOT(check(QTableWidgetItem *)); //QObject::connect(ui->tableWidget, SIGNAL(itemChanged(QTableWidgetItem*)), this, SLOT(check(QTableWidgetItem *));
C++ (Qt)void MainWindow::check(){ // if ( item->checkState() == Qt::Checked ) QMessageBox::warning(this, QString::fromLocal8Bit("privet"), QString::fromLocal8Bit("mir"));}
C++ (Qt)void MainWindow::on_checkBox_clicked(){ MainWindow::check();}
C++ (Qt)mainwindow.cpp:138: ошибка: expected ')' before ';' tokenQObject::connect(ui->tableWidget, SIGNAL(itemClicked(QTableWidgetItem *)), this, SLOT(check()); ^
C++ (Qt)QObject::connect(ui->tableWidget, SIGNAL(itemClicked(QTableWidgetItem *)), this, SLOT(check());