QTableView и QSqlTableModel в разных классах |
Здравствуйте, гость ( Вход | Регистрация )
QTableView и QSqlTableModel в разных классах |
Necros |
14.3.2012, 9:32
Сообщение
#1
|
Новичок Группа: Новичок Сообщений: 6 Регистрация: 14.3.2012 Пользователь №: 3262 Спасибо сказали: 0 раз(а) Репутация: 0 |
Хочу сделать отдельный класс для работы с базой, но у меня возникает ошибка, если я в ui->tableView->setModel(); передаю модель созданную в другом классе. Если Создаю ее в этом же классе, то все работает хорошо, но хочется весь SQL утащить в отдельный класс и сделать методы для доступа к базе.
Фрагмент установки модели:
dao.h
dao.cpp
Ошибки:
Я пробовал уже и QAbstractItemModel Делать и создавать модель на месте и ей присваивать возвращаемую модель. Подскажите, пожалуйста в чем ошибка, уж больно не хочется страшный копипаст делать в каждом методе. |
|
|
xu-user |
14.3.2012, 10:09
Сообщение
#2
|
Студент Группа: Новичок Сообщений: 18 Регистрация: 22.6.2011 Пользователь №: 2761 Спасибо сказали: 0 раз(а) Репутация: 0 |
Функция setModel требует указатель на модель. А ваша функция QSqlTableModel DAO::getModel() возвращает объект модели, а не указатель на её. Измените возвращаемое значение на QSqlTableModel*, должно работать.
|
|
|
silver47 |
16.3.2012, 8:27
Сообщение
#3
|
Активный участник Группа: Участник Сообщений: 356 Регистрация: 1.4.2010 Пользователь №: 1584 Спасибо сказали: 40 раз(а) Репутация: 6 |
Более того, хочу отметить, что при выходе из void Settings::setModel() Ваша модель будет уничтожена, вместе с объектом dao. (если быть точным, то не будет уничтожена, но выпадет из поля видимости, и Вы сможете получить вылет программы в совсем неожиданном месте.)
|
|
|
Necros |
19.3.2012, 9:06
Сообщение
#4
|
Новичок Группа: Новичок Сообщений: 6 Регистрация: 14.3.2012 Пользователь №: 3262 Спасибо сказали: 0 раз(а) Репутация: 0 |
Не подскажете как можно от этого спастись?
|
|
|
Litkevich Yuriy |
19.3.2012, 18:50
Сообщение
#5
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
Necros,
при выходе из void Settings::setModel() Ваша модель будет уничтожена, вместе с объектом dao. (если быть точным, то не будет уничтожена, но выпадет из поля видимости, и Вы сможете получить вылет программы в совсем неожиданном месте.) такого не должно произойти, т.к. модель, созданная динамически, будет себе жить поживать. А с помощью:ui->tableView->model() можно будет получить и указатель на неё. Однако, что верно, то верно: Цитата { объект dao использован только для получения модели, а нужен ли для этого целый класс?dao = DAO(); ui->tableView->setModel(dao.getModel()); } |
|
|
Текстовая версия | Сейчас: 29.11.2024, 8:18 |