Как отобразить содержимое БД в форме?, в qt Creator почему-то не отображается база в TableView |
Здравствуйте, гость ( Вход | Регистрация )
Как отобразить содержимое БД в форме?, в qt Creator почему-то не отображается база в TableView |
AnnTenna |
25.2.2010, 14:25
Сообщение
#1
|
Новичок Группа: Новичок Сообщений: 4 Регистрация: 25.2.2010 Пользователь №: 1483 Спасибо сказали: 0 раз(а) Репутация: 0 |
Здравствуйте, помогите пожалуйста.
Вопрос глупый, извините, с qt столкнулась недавно, поэтому еще не совсем разобралась, и мало чего понятно. Мне необходимо каким-нибудь образом отобразить содержимое базы данных(реляционной) прямиком на пользовательский интерфейс, чтоб содержимое для начала отображалось при нажатии на какую-то кнопку. Для начала, я порылась в примерах, нашла замечательную реляционную базу данных и на ней решила потренироваться. : Сделала свой проект, перенесла туда все функции с того примера. (пример называется RelationalTableModel) На мою форму помимо всего прочего добавила кнопку и TableView Вот моя кнопка:
Программа компилится, но выдаёт белое полотно вместо таблички базы, сколько бы раз на кнопку ни нажимать. g_flag: |
|
|
Litkevich Yuriy |
25.2.2010, 15:09
Сообщение
#2
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
Проблема тут
QSqlRelationalTableModel model; Ты создала переменную на стеке (как обычную), как только ты выйдешь за область видимости (в данном случае это функция on_btBegin_clicked) так сразу эта переменная будет удалена. Т.е. твоя модель перестанет существовать.initializeModel(&model);// создание модели по таблице такой способ инициализации модели, на мой взгляд не красив. С учётом выше сказанного, лучше сделать так: Т.е. в функции createModel() создавай (с помощью оператора new и не забудь установить ей родителя) и заполняй модель.Указатель на model лучше описать в объявлении класса, т.к. он потенциально может пригодится в дальнейшем коде П.С. посмотрел код примера RelationalTableModel его нужно очень внимательно изучить и понять, что и зачем. В нём нет такой проблемы как у тебя так как, основные объекты созданы просто в функции main а она завершится только при завершении приложения. |
|
|
AnnTenna |
25.2.2010, 18:25
Сообщение
#3
|
Новичок Группа: Новичок Сообщений: 4 Регистрация: 25.2.2010 Пользователь №: 1483 Спасибо сказали: 0 раз(а) Репутация: 0 |
Litkevich Yuriy спасибо за точное объяснение
Теперь ясно, в чем дело! Очень жалко, что у меня всё равно не получается. Теперь ругается на эту строчку:
Пишет: :39: error: ISO C++ forbids declaration of `QSqlRelationalTableModel' with no type и еще вот это: :39: error: expected `;' before '*' token Как будто QSqlRelationalTableModel вообще не считает за тип. |
|
|
Litkevich Yuriy |
25.2.2010, 19:37
Сообщение
#4
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
AnnTenna |
25.2.2010, 19:56
Сообщение
#5
|
Новичок Группа: Новичок Сообщений: 4 Регистрация: 25.2.2010 Пользователь №: 1483 Спасибо сказали: 0 раз(а) Репутация: 0 |
Цитата Как будто QSqlRelationalTableModel вообще не считает за тип.А он у тебя где-то описан, #include соответствующий есть с описанием этого типа? Точно! Нет. |
|
|
AnnTenna |
26.2.2010, 1:43
Сообщение
#6
|
Новичок Группа: Новичок Сообщений: 4 Регистрация: 25.2.2010 Пользователь №: 1483 Спасибо сказали: 0 раз(а) Репутация: 0 |
Уффф..вроде, более менее разобралась, хоть как-то заработало
Не знаю, насколько правильно, но таблица отобразилась как было задумано
Кнопка:
Вот так... Теперь хотелось бы, чтобы эти таблицы можно было б сохранять и загружать, но, видимо, это уже отдельная тема... |
|
|
Litkevich Yuriy |
26.2.2010, 4:33
Сообщение
#7
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
Теперь хотелось бы, чтобы эти таблицы можно было б сохранять и загружать, но, видимо, это уже отдельная тема... да, отдельная тема. Читай её тут
|
|
|
Текстовая версия | Сейчас: 29.11.2024, 22:32 |