Russian Qt Forum
Ноябрь 23, 2024, 22:18 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Нет данных в QTableView  (Прочитано 3977 раз)
zvzdpd
Гость
« : Март 12, 2009, 15:19 »

В первом случае QTableView заполняется данными, во втором нет:

1. Проект из одного файла:
Код:
#include <QtGui>
#include <QtSql>

int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("at");

QSqlTableModel model;
model.setTable("cars");
model.select();

QTableView view;
view.setModel(&model);
view.show();
return a.exec();
}

2. Проект из шаблона qtcreator`a с использованием qtdesigner, часть кода(полный во вложении). Здесь виджет tableView остается полностью пустым:
Код:
Widget::Widget(QWidget *parent)
    : QWidget(parent), ui(new Ui::WidgetClass)
{
    ui->setupUi(this);

QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("at");

QSqlTableModel model;
model.setTable("cars");
model.select();

ui->tableView->setModel(&model);
}
Что нужно сделать для отображения данных во 2-м случае?
winxp, qt-4.5.0, qtcreator-1.0.0
« Последнее редактирование: Март 12, 2009, 15:24 от zvzdpd » Записан
BRE
Гость
« Ответ #1 : Март 12, 2009, 15:22 »

Код:
	QSqlTableModel model;
model.setTable("cars");
model.select();

Нужно модель создавать динамически, а не на стеке:
Код
C++ (Qt)
QSqlTableModel *model = new QSqlTableModel;
model->setTable("cars");
model->select();
 
Записан
zvzdpd
Гость
« Ответ #2 : Март 12, 2009, 15:26 »

Спасибо. Что происходит когда я объявляю model в стеке? И почему тогда QSqlDatabase db объявляется статически? Когда делаю динамически, получается QSqlError(-1, "Driver not loaded", "Driver not loaded")
Код:
QSqlDatabase *db = new QSqlDatabase();
db->addDatabase("QSQLITE");
qDebug() << db->lastError();
« Последнее редактирование: Март 12, 2009, 15:57 от zvzdpd » Записан
developer
Гость
« Ответ #3 : Март 12, 2009, 16:12 »

Цитировать
Что происходит когда я объявляю model в стеке?
Когда програма заканчивает конструировать Widget твоя модель просто удаляется, поетому tableview не показывает ничего, и не крышит только из-за етого что когда ты делаеш setModel(model) ета модель еще существует.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.076 секунд. Запросов: 21.