Пытаюсь научиться работать в QtCreator. Создал проект в Qt с формой mainwindow_ui. На форме создал QTableWidget. Как заполнить её из базы данных?
Я сделал так:
Создал класс
#ifndef DATABASE_H
#define DATABASE_H
#include <QObject>
class Database : public QObject
{
Q_OBJECT
public:
bool OpenConnectDatabase();
void CloseConnectDatabase();
void fillTableCourse();
Database();
};
#endif // DATABASE_H
Описал функции:
#include "database.h"
#include <QMessageBox>
#include <QTableWidgetItem>
#include <QTableWidget>
#include "ui_mainwindow.h"
#include <QSqlQuery>
#include <QSqlDatabase>
Database::Database()
{
}
bool Database::OpenConnectDatabase()
{
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE","connect");
db.setDatabaseName("newbase.cb");
db.open();
if (!db.isOpen())
{
QMessageBox msg;
msg.setText(tr("Ошибка при подключении базы данных"));
msg.exec();
return false;
}
return true;
}
void Database::CloseConnectDatabase()
{
QSqlDatabase db= QSqlDatabase::database("connect");
db.close();
}
void Database::fillTableCourse()
{
QSqlDatabase db= QSqlDatabase::database("connect");
QSqlQuery *query= new QSqlQuery(db);
QTableWidgetItem *item= new QTableWidgetItem;
QTableWidget *ui_tableWidget=qFindChild<QTableWidget*>(this,"ui_tableWidget");
query->exec("SELECT one,two FROM tbl1");
while(query->next()){
int i=0;
for(int j=0; j=1; j++) {
item->setText(query->value(j).toString());
ui_tableWidget->setItem(i,j,item);
}
i++;
}
}
Создал объект в mainwindow.h
...
#include <database.h>
...
Database *database;
...
Вызываю функции в mainwindow.cpp
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
m_ui(new Ui::MainWindow)
{
m_ui->setupUi(this);
database->OpenConnectDatabase();
database->fillTableCourse();
}
База данных вреде бы как подключаеться, а программа завершается с ошибкой
D:\Pro\Test Qt\RaketskyyTest\debug\RaketskyyTest.exe exited with code -1073741819
Ошибка происходить при вызове ui_tableWidget->setItem(i,j,item);