Seite 1 von 1

QSqlTableModel in Konstruktor funktioniert nicht.

Verfasst: 19. Juli 2011 07:52
von Okeanos
Hallo, ich möchte über ein QSqlTableModel den Inhalt einer Datenbanktabelle über ein QTableView anzeigen. Soweit funktioniert auch alles. Nur wenn ich den Zeiger auf ein QSqlTaboleModel in den Konstruktor von MainWindow lege, das QTableView, aber erst später mit dem Model verbinde, wird nichts angezeigt. Erzeuge ich den Zeiger allerdings unmittelbar in der Funktion, in welcher ich das TableView mit dem Moel verbinde funktioniert es. Und ich kann mir einfach nicht erklären, warum.

Header-Datei

Code: Alles auswählen

#include <QSqlTableModel>
#include <QMainWindow>

#include "SQL/DatabaseManager.h"

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow {
		Q_OBJECT

	public:
		MainWindow( QWidget *parent = 0 );
		~MainWindow();

	private:
		Ui::MainWindow *ui;
		DatabaseManager *databaseManager;
		QSqlTableModel *model;
		void initializeDatabase();

};
cpp-Datei

Code: Alles auswählen

#include <QDebug>

#include "MainWindow.h"
#include "ui_MainWindow.h"

MainWindow::MainWindow( QWidget *parent ) : QMainWindow( parent ), ui( new Ui::MainWindow ) {
	ui->setupUi( this );

	databaseManager = new DatabaseManager( this );
//	model = new QSqlTableModel(this); // Funktioniert nicht

	initializeDatabase();
}

MainWindow::~MainWindow() {
	delete ui;
}

void MainWindow::initializeDatabase() {
	databaseManager->openDB();
}

void MainWindow::activate() {
	model = new QSqlTableModel(this); // Funktioniert
	model->setTable("EmployeeTable");
	model->select();
	ui->tableView->show();
}

Re: QSqlTableModel in Konstruktor funktioniert nicht.

Verfasst: 19. Juli 2011 08:08
von franzf
Wo setzt du eigentlich das Model in die View?
Geht aus deinem Code nicht hervor, so wie du es uns zeigst, sollte nie etwas angezeigt werden.

Re: QSqlTableModel in Konstruktor funktioniert nicht.

Verfasst: 19. Juli 2011 23:21
von Okeanos
Richtig, Entschuldigung. Da ist beim Vereinfachen meines Codes wohl etwas zuviel rausgeflogen.

Und inzwischen habe ich auch herausgefunden, warum es bei mir nicht funktioniert. Natürlich kann ich keinen Zugriff auf die Datenbank haben, wenn ich das QSqlTableModel-Objekt anlege, bevor ich eine Verbindung zur Datenbank hergestellt habe.