[gelöst] wo ist meine Klasse?
Verfasst: 11. Mai 2006 12:14
Hallo,
ich habe eine Klasse MainWindow, die ist abgeleitet von ui_MainWindow (ui_MainWindow ist die von uic automatisch aus der .ui erzeugte Headerdatei)
Aus diesem Fenster rufe ich eine Klasse OpenProjectDialog auf.
OpenProjectDialog soll jetzt mit den dort eingegebenen Daten ein QSqlDatabase für das MainWindow erzeugen damit das dann der gesamten App zur Verfügung steht:
Das ganze kompiliert, stürzt dann aber an diesem Punkt ab. Ich habe jetzt mal den Debugger nach myParent->db gefragt und er erzählt mir, dass ui_MainWindow kein Attribut namens db hätte. Stimmt. Deswegen habe ich ja die abgeleitete Klasse MainWindow erzeugt. Und eigentlich dachte ich auch verwendet.
Wieso greift er direkt auf ui_MainWindow zu ??
ich habe eine Klasse MainWindow, die ist abgeleitet von ui_MainWindow (ui_MainWindow ist die von uic automatisch aus der .ui erzeugte Headerdatei)
Code: Alles auswählen
MainWindow.h:
#include "ui_MainWindow.h"
class MainWindow : public QMainWindow, public Ui::MainWindow {
Q_OBJECT
public:
static MainWindow* self( QWidget* = 0 );
QSqlDatabase db;
private:
MainWindow( QWidget* = 0 );
static QPointer<MainWindow> _self;
...}Code: Alles auswählen
MainWindow.cpp (teilweise:)
#include "OpenProjectDialog.h"
void MainWindow::openProject() {
OpenProjectDialog::self(this)->show();
}Code: Alles auswählen
OpenProjectDialog.cpp (teils)
void OpenProjectDialog::on_pBOpen_clicked() {
MainWindow* myParent = (MainWindow *)( this->parent());
myParent->db = QSqlDatabase::addDatabase(CB_driver->currentText());
if (CB_driver->currentText() == "QMYSQL" || CB_driver->currentText() == "QMYSQL3") {
myParent->db.setHostName(LE_Server->text());Wieso greift er direkt auf ui_MainWindow zu ??