Вывод данных из БД в TableView(Qt)

447
10 ноября 2017, 09:39

Здравствуйте, стал изучить работу с БД в Qt creator... Создал БД в SQLite, в ней пару таблиц связал их, немного заполнил, да дай думаю красиво это все выведу в TableView. Но не все так хорошо у меня получилось как планировалось...

Дело, в том что вывелась просто вся информация с таблицы вместе со всеми индексами, и названиями полей. Поэтому у меня такой вопрос, как сделать, так чтобы к выводу в TableWiew можно было бы добавить запрос и изменить названия полей(к примеру вывести только ФИО и номер, ну соответственно переименовать названия столбцов в это значение). Вот мой код

Подключение к БД

database.h

#ifndef DATABASE_H
#define DATABASE_H
#include <QtSql/QSqlDatabase>
class DataBase
{
private:
    QSqlDatabase db;
public:
    static DataBase* getInstance();
    QSqlDatabase getConnection();
    void connect();
    void disconnect();
};
#endif // DATABASE_H

database.cpp

#include "database.h"
void DataBase::connect()
{
    db = QSqlDatabase::addDatabase("QSQLITE");
    db.setDatabaseName("C:\\\Desktop\\SchoolDB\\app_data\\database.db3");
    if(db.open())
    {
        qDebug("Database is open");
    }
        else
    {
        qDebug("Database isn't open");
    }
}
DataBase* DataBase::getInstance()
{
    static DataBase instance;
    return &instance;
}
QSqlDatabase DataBase::getConnection()
{
    return db;
}
void DataBase::disconnect()
{
    db.close();
}

форма для вывода данных из БД

staffs_form.h

#ifndef STAFFS_FORM_H
#define STAFFS_FORM_H
#include <QMainWindow>
#include <QtSql>
#include "QtSql/QSqlDatabase"
#include "QSqlQuery"
namespace Ui {
class StaffsForm;
}
class StaffsForm : public QMainWindow
{
    Q_OBJECT
public:
    explicit StaffsForm(QWidget *parent = 0);
    ~StaffsForm();
private:
    Ui::StaffsForm *ui;
    QSqlTableModel* model;
};
#endif // STAFFS_FORM_H

staffs_form.cpp

#include "staffs_form.h"
#include "ui_staffs_form.h"
#include "app_data/database.h"
StaffsForm::StaffsForm(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::StaffsForm)
{
    ui->setupUi(this);
    DataBase::getInstance()->connect();
    model = new QSqlTableModel(0, DataBase::getInstance()->getConnection());
    model->setTable("staffs");
    model->select();
    ui->tableView->setModel(model);
}
StaffsForm::~StaffsForm()
{
    DataBase::getInstance()->disconnect();      
    delete ui;
}
READ ALSO
Указатель this c++

Указатель this c++

Добрый вечерУ меня такой вопрос, недавно лазил в инете и наткнулся на такой код: return*this*Fraction(fra

270
Проверка введенных данных QTableWidget

Проверка введенных данных QTableWidget

Доброго времени суток коллегиЕсть задача используя QTableWidget проверять введенные пользователем данные в ячейки с помощью нехитрой конструкции

212
Ошибки в библиотеке GLM (C++ Builder)

Ошибки в библиотеке GLM (C++ Builder)

При подключении библиотеки GLM возникают ошибки:

225
Отправить сообщениие

Отправить сообщениие

Имеется следующая функцияНадо чтобы вывелось сообщение на другой странице когда осуществится переход window

243