Страницы

Поиск по вопросам

понедельник, 4 марта 2019 г.

Как скопировать данные из tableWidget в tableWidget_1?

Добрый день, создал программу которая забирает данные из БД и выводит их в 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(); }
}


Ответ

Задача решена:
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());

Комментариев нет:

Отправить комментарий