[gelöst] QSqlTableModel mit tableview bleibt leer
Verfasst: 27. Februar 2010 17:10
Hallo zusammen,
ich versuche auf eine Postgres-Datenbank zuzugreifen.
Der Beipielcode, den ich als Vorlage genommen hat, tut dies direkt in der main. Das funktioniert auch und öffnet eine Tabelle, die die Daten darstellt. Das funktioniert also...
hier die main: (der Datenbankteil zur Zeit auskommentiert)
Ok, jetzt probiere ich es im mainwindow (erstellt mit dem Assistenten):
Das Tableview wurde im Designer erstellt und wird auch mit "intellisense" gefunden.
Aber die Tabelle bleibt in diesem Fall leider leer.

Weiss vielleicht jemand Rat?
ich versuche auf eine Postgres-Datenbank zuzugreifen.
Der Beipielcode, den ich als Vorlage genommen hat, tut dies direkt in der main. Das funktioniert auch und öffnet eine Tabelle, die die Daten darstellt. Das funktioniert also...
hier die main: (der Datenbankteil zur Zeit auskommentiert)
Code: Alles auswählen
#include <QtGui/QApplication>
#include "mainwindow.h"
#include <QtGui>
#include <QtSql>
#include <QDebug>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
/*
QSqlDatabase db = QSqlDatabase::addDatabase("QPSQL");
db.setHostName("localhost");
db.setDatabaseName("B6");
db.setUserName("postgres");
db.setPassword("postgres");
if (!db.open())
{
QSqlError err = db.lastError();
QMessageBox::information(0, QObject::tr("Fehler"), err.text());
return 1;
}
QTableView tableView;
QSqlTableModel model;
model.setTable("gearset");
model.select();
model.setEditStrategy(QSqlTableModel::OnFieldChange);
tableView.setModel(&model);
tableView.setWindowTitle("meine erste Datenbank");
tableView.show();
return a.exec();
*/
}
Code: Alles auswählen
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QtGui>
#include <QtSql>
#include <QDebug>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
QSqlDatabase db = QSqlDatabase::addDatabase("QPSQL");
db.setHostName("localhost");
db.setDatabaseName("B6");
db.setUserName("postgres");
db.setPassword("postgres");
if (!db.open())
{
QSqlError err = db.lastError();
QMessageBox::information(0, QObject::tr("Fehler"), err.text());
}
QSqlTableModel model;
model.setTable("gearset");
model.select();
model.setEditStrategy(QSqlTableModel::OnFieldChange);
ui->tableView->setModel(&model);
ui->tableView->show();
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::changeEvent(QEvent *e)
{
QMainWindow::changeEvent(e);
switch (e->type()) {
case QEvent::LanguageChange:
ui->retranslateUi(this);
break;
default:
break;
}
}
Aber die Tabelle bleibt in diesem Fall leider leer.
Weiss vielleicht jemand Rat?