Неверный вывод данных из таблицы
Заполнил таблицу таким образом:
for (int i = 0; i < ui->tableWidget->columnCount(); i++){
for (int j = 0; j < ui->tableWidget->rowCount(); j++) {
ui->tableWidget->model()->setData(ui->tableWidget->model()->index(j, i), tr(" "));
}
}
Далее сделал слот который вызывается каждые 1000 мс и там написал:
qDebug() << ui->tableWidget->model()->data(ui->tableWidget->model()->index(0, 0));
В "Вывод приложения" пишется:
QVariant(QString, " ")
Но написав:
В "Вывод приложения" пишется:
QVariant(QString, "1")
QVariant(QString, " ")
QVariant(QString, "1")
QVariant(QString, " ")
Ответы (1 шт):
Автор решения: Alexander Chernin
→ Ссылка
Если вы используете класс QTableWidget, то наполнять его данными надо при помощи метода QTableWidget::setItem и объектов класса QTableWidgetItem:
for (int i = 0; i < ui->tableWidget->columnCount(); i++) {
for (int j = 0; j < ui->tableWidget->rowCount(); j++) {
QTableWidgetItem* item = new QTableWidgetItem();
// Ячейка должна быть редактируема
item->setFlags(item->flags() | Qt::ItemIsEditable);
item->setText(tr(""));
ui->tableWidget->setItem(i /*row*/, j /*column*/, item);
}
}
Получение значения из ячейки:
QTableWidgetItem* item = ui->tableWidget->item(0 /*row*/, 0 /*column*/);
if ( item )
qDebug() << item->text();
Если же вы непременно хотите воспользоваться моделью данных (как оболочкой для ваших, то есть пользовательских, данных), то воспользуйтесь классом QTableView и классом QAbstractItemModel и его наследованием (или уже готовыми наследниками)
