Seite 1 von 1

Keine Anzeige in TableView

Verfasst: 17. Mai 2009 12:02
von pierredrks
Hallo,
ich schreibe gerade eine Anwendung, die auf eine MYSQL-Datenbank zugreift. Ich habe mit dem Designer eine kleine GUI mit einem TableView und einem Button erzeugt. Den Tabelleninhalt möchte ich mit einem QSqlTableModel in dem TableView anzeigen lassen. Aber es wird nichts angezeigt. Eine Verbindung zur Datenbank wird hergestellt.

Das ganze mache ich derzeit im Konstruktor des Hauptfensters.

Code: Alles auswählen

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent), ui(new Ui::MainWindow)
{
    ui->setupUi(this);
	
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL3");
	db.setDatabaseName("ijb");
	db.setHostName("localhost");
	db.setUserName("pierre");
	db.setPassword("****");



	if (!db->open())
	{
		QSqlError err = db->getError();
		QMessageBox::information(0,"Nachricht",err.text());
	}

	QSqlTableModel model;
	model.setTable("Mitarbeiter");
	model.select();
	model.setEditStrategy(QSqlTableModel::OnRowChange);
	ui->tableView->setModel(&model);

}
Ich hoffe jemand von euch kann mir sagen wo der Fehler ist.

Achso, ich hatte zu Testzwecken den Codeteil mit dem Model mal in einen Slot vom Hauptformular gesteckt, der bei clicken des Buttons aktiviert wurde. Dort konnte ich schon mal die Gitter des TableView sehen, die aber sofort wieder gelöscht wurden.
Daher vermute ich, dass das Ergebnis der Abfrage sofort nach dem Zeichnen der Tabelle wieder gelöscht wird.

Gruß
Pierre

Verfasst: 17. Mai 2009 12:30
von forgoden
mach new rein
etwa so

Code: Alles auswählen

   QSqlTableModel *model = new QSqlTableModel ;
   model->setTable("Mitarbeiter");
   model->select();
   model->setEditStrategy(QSqlTableModel::OnRowChange);  

denke dass das dann geht.

Verfasst: 17. Mai 2009 18:37
von upsala
@forgoden: Das new ist nicht notwendig, schau dir mal die Doku an

@pierredrks: Schau dir mal die Lebensdauer deines Models an.

Verfasst: 18. Mai 2009 09:07
von pierredrks
Die Lebensdauer war es. Danke für den HInweis.