es muss natürlich
query = new QSqlQuery(db);
statt
QSqlQuery* query = new QSqlQuery(db);
heißen.
Ich habe keine Erklärung dafür, wie ich da auch die Idee kam...
Irgendwie habt ihr mir geholfen, also... Danke .
Hallo,
ich habe eine Klasse 'MainForm' und in dieser ein privates Attribut 'QSqlQuery* query' und eine private Methode 'ladeListe()'. Wenn ich in dieser Methode aber auf 'query' zugreife stürzt das Programm ab. Im Konstruktor lasse ich den Zeiger 'query' auf ein QSqlQuery zeigen.
Hier der verkürzte Quelltext:
mainform.h:
Code: Alles auswählen
#ifndef MAINFORM_H
#define MAINFORM_H
#include "ui_main.h"
#include "ui_whinzu.h"
#include "wHinzu.h"
#include <QtSql>
#include <QModelIndex>
#include <QMenu>
#include <QAction>
#include <QPoint>
#include <QContextMenuEvent>
class MainForm : public QMainWindow, private Ui::MainWindow
{
Q_OBJECT
public:
MainForm();
private:
QSqlDatabase db;
QSqlQuery* query;
void ladeListe();
};
#endif // MAINFORM_H
Code: Alles auswählen
#include "mainform.h"
MainForm::MainForm()
{
setupUi(this);
db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("./manager.sqlite");
db.open();
// Zu query gibt der Compiler auch eine Warnung,
// dass des nirgendwo benutzt wird
QSqlQuery* query = new QSqlQuery(db);
ladeListe();
}
// Hier stürzt das programm ab
void MainForm::ladeListe()
{
query->prepare("SELECT [...]"));
query->exec();
}
Danke im Voraus.