Ich habe nun ein neues Test-Projekt erstellt, dabei stellt sich mir die Frage was packe ich eigentlich in die main.cpp und was in die mainwindows.cpp?
Ich habe die notwendigen Schritte jetzt in der mainwindow.cpp realisiert:
Code: Alles auswählen
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent), ui(new Ui::MainWindowClass)
{
ui->setupUi(this);
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("localhost");
db.setDatabaseName("meinedb");
db.setUserName("meinuser");
db.setPassword("meinpasswort");
db.open();
model = new QSqlTableModel(this);
ui->tableView->setModel(model);
QString sqlTable = "kunden";
model->setTable(sqlTable);
model->select();
}
Wenn ich nun mehrfach hintereinander model->setTable und model->select einfüge klappt es, es werden keine zusätzlichen Leerzeilen im tableView angezeigt. Selbst wenn ich setModel mehrfach anwende kommt es nicht zu dem Leerzeilen-Fehler.
Code: Alles auswählen
model = new QSqlTableModel(this);
ui->tableView->setModel(model);
QString sqlTable = "kunden";
model->setTable(sqlTable);
model->select();
ui->tableView->setModel(model);
model->setTable(sqlTable);
model->select();
ui->tableView->setModel(model);
model->setTable(sqlTable);
model->select();
So wie es aussieht muss der Fehler dann im Aufruf oder im Design der Methoden selectTable liegen.
selectTable erwarten zwei Variablen, zum einen den Tabellennamen (QString sqlTable) und zum anderen einein evtl. selectFilter (QString sqlFilter). Also eigentlich nichts ungewöhliches.
Ich werde nun mein Test-Projekt um eine Methode selectTable erweitern, um zu sehen ob der Fehler dann wieder auftritt.
Hast du evtl. schon mal eine Antwort auf die Frage was ich in die main.cpp und was ich in die mainwindow.cpp packe?