crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Как отобразить содержимое БД в форме?, в qt Creator почему-то не отображается база в TableView
AnnTenna
  опции профиля:
сообщение 25.2.2010, 14:25
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 4
Регистрация: 25.2.2010
Пользователь №: 1483

Спасибо сказали: 0 раз(а)




Репутация:   0  


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

Мне необходимо каким-нибудь образом отобразить содержимое базы данных(реляционной) прямиком на пользовательский интерфейс, чтоб
содержимое для начала отображалось при нажатии на какую-то кнопку.
Для начала, я порылась в примерах, нашла замечательную реляционную базу данных и на ней решила потренироваться. :pardon: :

Сделала свой проект, перенесла туда все функции с того примера. (пример называется RelationalTableModel)
На мою форму помимо всего прочего добавила кнопку и TableView
Вот моя кнопка:

void sqltwst_fromAnn::on_btBegin_clicked()
{
    if (!createConnection())
        return; // соединение с базой
    createRelationalTables();
// созд таблиц и их заполнение
    QSqlRelationalTableModel model;
   initializeModel(&model);// создание модели по таблице
      //  QTableView *view = ui->tvWagons;
    ui->tvWagons->setModel(&model);
    ui->tvWagons->setItemDelegate(new QSqlRelationalDelegate(this));
    //view->show();

}


Программа компилится, но выдаёт белое полотно вместо таблички базы, сколько бы раз на кнопку ни нажимать.
g_flag:
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Litkevich Yuriy
  опции профиля:
сообщение 25.2.2010, 15:09
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Проблема тут
Цитата(AnnTenna @ 25.2.2010, 17:25) *
QSqlRelationalTableModel model;
Ты создала переменную на стеке (как обычную), как только ты выйдешь за область видимости (в данном случае это функция on_btBegin_clicked) так сразу эта переменная будет удалена. Т.е. твоя модель перестанет существовать.



Цитата(AnnTenna @ 25.2.2010, 17:25) *
initializeModel(&model);// создание модели по таблице
такой способ инициализации модели, на мой взгляд не красив. С учётом выше сказанного, лучше сделать так:
QSqlRelationalTableModel *model; // в объявлении класса sqltwst_fromAnn
...
// в функции on_btBegin_clicked
model = createModel();
Т.е. в функции createModel() создавай (с помощью оператора new и не забудь установить ей родителя) и заполняй модель.

Указатель на model лучше описать в объявлении класса, т.к. он потенциально может пригодится в дальнейшем коде

П.С.
посмотрел код примера RelationalTableModel его нужно очень внимательно изучить и понять, что и зачем.
В нём нет такой проблемы как у тебя так как, основные объекты созданы просто в функции main а она завершится только при завершении приложения.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 2.12.2024, 2:15