#cpp #linux #qt #qtcreator
Добрый день, создал программу которая забирает данные из БД и выводит их в qtableWidget_1 в котором выведенные строки можно отметить с помощью Check Box. Рядом есть qtablewidget_2 куда отмеченные строки нужно скопировать, подскажите как такое можно реализовать ? Сам код вывода запроса из БД. void MainWindow::on_pushButton_2_clicked() { ui->tableWidget->setColumnCount(5); // Указываем число колонок ui->tableWidget->setShowGrid(true); // Включаем сетку ui->tableWidget->setSelectionMode(QAbstractItemView::SingleSelection); // Разрешаем выделение только одного элемента ui->tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);// Разрешаем выделение построчно //ui->tableWidget->setHorizontalHeaderLabels(headers);// Устанавливаем заголовки колонок ui->tableWidget->horizontalHeader()->setStretchLastSection(false);// Растягиваем последнюю колонку на всё доступное пространство // ui->tableWidget->hideColumn(0);// Скрываем колонку под номером 0 ui->tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);//Запрещаем редактировать данные в полях таблицы // Создаём запрос для для выборки записей из базы данных QSqlQuery query = QSqlQuery(db); if (!query.exec("SELECT * FROM mytable")) { QMessageBox::information(this,"Окно информации","Не удалось выполнить запрос возможно нет соеденеия с базой данных."); qDebug() << query.lastError().databaseText(); qDebug() << query.lastError().driverText(); return; }else{ /* Выполняем заполнение 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); /* Проверяем, на статус нечетности, если нечетное устройство, то * выставляем состояние чекбокса в Checked, иначе в Unchecked * */ if(query.value(1).toInt() == 1){ item->setCheckState(Qt::Checked); } else { item->setCheckState(Qt::Unchecked); } ui->tableWidget->setItem(i,0, item);// Устанавливаем чекбокс во вторую колонку // Забираем все данные из результата запроса и устанавливаем в остальные поля ui->tableWidget->setItem(i,1, new QTableWidgetItem(query.value(1).toString())); 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())); ui->tableWidget->setItem(i,5, new QTableWidgetItem(query.value(5).toString())); } ui->tableWidget->resizeColumnsToContents(); db.close(); } }
Ответы
Ответ 1
Задача решена: ui->tableWidget_1->setItem(i,1, new QTableWidgetItem(ui->tableWidget->item(i, 1)->text())); как вариант можно использовать так же данную конструкцию ui->tableWidget_1->setItem(i,1, ui->tableWidget->item(i, 1)->clone());
Комментариев нет:
Отправить комментарий