Здравствуйте, гость ( Вход | Регистрация )
Litkevich Yuriy | Дата 15.12.2008, 7:29 |
и еще вопрос.. а можно добавлять новые элементы в талблицу при помощи qsqltablemodel или ему подобных? можно, я соорудил пару виджетов и их везде пользую:1) TableEditor 2) RelationTableEditor тут: sqleditors.zip ( 7.66 килобайт ) Кол-во скачиваний: 548 пользую так: 1) интерфейс наследника TableEditor
реализация наследника TableEditor
2) интерфейс наследника RelationTableEditor
реализация наследника RelationTableEditor
|
|
genusatplay | Дата 15.12.2008, 1:29 |
Скорее всего проблема в том, что QSqlTable надо создавать после QSqlDatabase. Т.к. на момент создания QSqlTable нет ни одного соединения с базой и конструктор не находит default connection. я сразу не понял это.. чет забыл что создаю так "qsqltablemodel docs;" вот и была трабла.. и еще вопрос.. а можно добавлять новые элементы в талблицу при помощи qsqltablemodel или ему подобных? |
|
SABROG | Дата 15.12.2008, 1:18 |
Скорее всего проблема в том, что QSqlTable надо создавать после QSqlDatabase. Т.к. на момент создания QSqlTable нет ни одного соединения с базой и конструктор не находит default connection. | |
genusatplay | Дата 15.12.2008, 0:44 |
я чтото никак в толк немогу взять почему неработает 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 коннект.. так что все должно работать но неработает ( |
|
Просмотр темы полностью (откроется в новом окне) | |
Текстовая версия | Сейчас: 24.4.2024, 19:31 |