crossplatform.ru

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

> QTableView + QSqlTableModel показывает пустое белое окошко
genusatplay
  опции профиля:
сообщение 15.12.2008, 0:44
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 50
Регистрация: 8.11.2008
Пользователь №: 416

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




Репутация:   0  


я чтото никак в толк немогу взять почему неработает showdoc() показывает пустое белое окошко
подскажите плиз что нетак написал?
MAINWINDOW_H
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QtSql>
#include <QtGui>


class MainWindow : public QMainWindow
{
Q_OBJECT

public:
MainWindow();

private slots:
void connectDb();
void disconnectDb();
void showDoc();

private:
void createMenus();

QSqlDatabase db;

QAction *exitAction;
QAction *connectAction;
QAction *disconnectAction;
QAction *showdocsAction;

QMenu *dbMenu;
QMenu *docMenu;

QSqlTableModel docs;
QTableView docsview;

};
#endif

MainWindow.cpp

#include "mainwindow.h"

MainWindow::MainWindow()
{
setWindowTitle(tr("Database editor"));
createMenus();

}
void MainWindow::createMenus()
{
dbMenu = menuBar()->addMenu(QObject::tr("&Database"));
connectAction = dbMenu->addAction(tr("&Connect"));
connect(connectAction,SIGNAL(triggered()),this,SLOT(connectDb()));

disconnectAction = dbMenu->addAction(tr("&Disconnect"));
disconnectAction->setDisabled(true);
connect(disconnectAction,SIGNAL(triggered()),this,SLOT(disconnectDb()));

dbMenu->addSeparator();
exitAction = dbMenu->addAction(QObject::tr("E&xit"));
exitAction->setShortcut(QKeySequence(QObject::tr("Ctrl+Q")));
exitAction->setStatusTip(QObject::tr("Exit programm"));
connect(exitAction,SIGNAL(triggered()),qApp,SLOT(quit()));

docMenu = menuBar()->addMenu(tr("Documents"));
showdocsAction = docMenu->addAction(tr("Show Documents"));
showdocsAction->setDisabled(true);
connect(showdocsAction,SIGNAL(triggered()),this,SLOT(showDoc()));

}
void MainWindow::connectDb()
{
db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("docs.sqlite");
if (db.open()){
disconnectAction->setEnabled(true);
showdocsAction->setEnabled(true);
connectAction->setDisabled(true);
} else {
QMessageBox::warning(this,"Database Error",db.lastError().text());
}

}
void MainWindow::disconnectDb()
{
db.close();
if ( !db.isOpen() ){
connectAction->setEnabled(true);
disconnectAction->setDisabled(true);
showdocsAction->setDisabled(true);
} else {
QMessageBox::warning(this,"Database Error","Can't disconnected from database");
}


}
void MainWindow::showDoc()
{
docs.setTable("elements");
docs.setSort(0,Qt::AscendingOrder);
docs.select();
docsview.setModel(&docs);
docsview.setWindowTitle(tr("List of documents"));
docsview.resizeColumnsToContents();
docsview.show();
}

посмотрел несколько примеров из книги... и чета ненашел каким образом коннектится БД с qsqltablemodel
там после открытия бд сразу идет выборка в таблицу и работает видимо, но в тех примерах все в 1ой процедуре делается

QSqlTableModel::QSqlTableModel ( QObject * parent = 0, QSqlDatabase db = QSqlDatabase() )
Creates an empty QSqlTableModel and sets the parent to parent and the database connection to db. If db is not valid, the default database connection will be used.
ну у меня вроде 1 коннект.. так что все должно работать но неработает (

Сообщение отредактировал Litkevich Yuriy - 31.1.2009, 12:42
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
SABROG
  опции профиля:
сообщение 15.12.2008, 1:18
Сообщение #2


Профессионал
*****

Группа: Участник
Сообщений: 1207
Регистрация: 8.12.2008
Из: Russia, Moscow
Пользователь №: 446

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




Репутация:   34  


Скорее всего проблема в том, что QSqlTable надо создавать после QSqlDatabase. Т.к. на момент создания QSqlTable нет ни одного соединения с базой и конструктор не находит default connection.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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


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




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