Не отображается таблица базы данных в TableView
При компиляции следующего кода TableView
остается пустым. Не могу найти причины. Закомментированная часть кода работает как надо. Подскажите в чем ошибка. В базе данных существует таблица cadre
и в ней есть строки. Dashboard
базы данных показывает, что во время выполнения программы запрос приходит.
mainwindow.cpp:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "QDebug"
#include "QSqlError"
#include "QSqlRecord"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
db= QSqlDatabase::addDatabase("QPSQL");
db.setHostName("localhost");
db.setDatabaseName("ModuleCadre");
db.setUserName("postgres");
db.setPassword("sadmin");
if(!db.open()){
qDebug()<<db.lastError().text();
return;
}
else {
qDebug()<<"Success";
}
model= new QSqlTableModel(this,db);
model->setTable("cadre");
model->select();
ui->tab->setModel(model);
// QSqlQueryModel *model = new QSqlQueryModel;
// model->setQuery("SELECT * FROM cadre");
// ui->tab->setModel(model);
}
MainWindow::~MainWindow()
{
db.close();
delete ui;
}
mainwindow.h:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QSqlDatabase>
#include <QSqlQuery>
#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_pushButton_clicked();
private:
Ui::MainWindow *ui;
QSqlDatabase db;
QSqlTableModel *model;
};
#endif // MAINWINDOW_H
Источник: Stack Overflow на русском