Qt | SQLite и QSqlTableModel

422
25 февраля 2017, 05:16

У меня есть таблица. Класс Table, унаследованый от QTableWidget и есть база данных. При открытии приложения нужно выгружать таблицу из БД и передавать данные в таблицу.

QSqlTableModel* model = new QSqlTableModel(nullptr, db);  
//================
void DataBase::initializeTheTable(QTableView  *view) //  Table
{
    model->setTable("main");
    model->select()
    model->setEditStrategy(QSqlTableModel::OnManualSubmit);
    view->setModel(model);
}
//================
mainTable = new Table; 
database->initializeTheTable(dataTable);

При открытии приложения данные выгружаются в таблицу, но при использовании любого метода или при любом событии(например нажатии на ячейку таблицы) программа падает, в дебаге просто указывает на вызов метода.

Где я не прав и как это можно сделать правильно?

Answer 1

Возможно, неправильно осуществляется управление временем жизни model.

Я бы сделал так:

void DataBase::initializeTheTable(QTableView  *view) //  Table
{
    QSqlTableModel* model = new QSqlTableModel(view, db);  
    model->setTable("main");
    model->select()
    model->setEditStrategy(QSqlTableModel::OnManualSubmit);
    view->setModel(model);
}

Тогда model точно не будет удалена раньше, чем перестанет быть нужной для view.

Сложно что-то еще сказать по предоставленной информации.

READ ALSO
Проблема прокрутки MFC

Проблема прокрутки MFC

Здравствуйте, возникла проблема при подключении полосы прокрутки к окнуВ общем в окне рисуется график, при этом координаты смещаются с помощью...

301
Не могу определить “GestureID” в условии “if”

Не могу определить “GestureID” в условии “if”

При компиляции под win64 все работает корректноПри компиляции под Android вылетает ошибка:

252
Удаление MySQL Community Server

Удаление MySQL Community Server

Доброго времени сутокКак мне удалить MySQL полностью? При запуске Installer'a появляется такое окно:

359
Как работает данный запрос? SQL

Как работает данный запрос? SQL

Понадобилось написать SQL запрос на выбор случайной записи, не долго думая открыл документацию MySQL, почитал про рандом и получилось вот это

356