Почему не отображаются столбцы таблицы SQLite в TableView Qt с++?
Итак, сделал таблицу STUDENTS в DBBrowser for SQLite, подключил к Qt но почему то столбцов таблицы нету в TableView. В чем может быть проблема?
Код mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("./students.db");
if(db.open()){
ui->statusbar->showMessage("db open" + db.databaseName());
model = new QSqlTableModel(this, db);
model->setTable("STUDENTS");
model->select();
ui->tableView->setModel(model);
ui->tableView->resizeColumnsToContents();
}
else {ui->statusbar->showMessage("no conneciton " + db.lastError().databaseText());}
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_btnAdd_clicked()
{
model->insertRow(model->rowCount());
}
Хедер
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QSqlDatabase>
#include <QSqlError>
#include <QSqlTableModel>
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private slots:
void on_btnAdd_clicked();
private:
Ui::MainWindow *ui;
QSqlDatabase db;
QSqlTableModel *model;
};
#endif // MAINWINDOW_H
Ответы (1 шт):
Автор решения: eri
→ Ссылка
Нужно добавить ещё вызов метода setQuery https://doc.qt.io/qt-6/qsqlquerymodel.html#setQuery
Была такая же проблема в python.