Nach forward declaration - Problem

Verschiedenes zu Qt
Antworten
listeman
Beiträge: 74
Registriert: 19. Mai 2009 13:54
Kontaktdaten:

Nach forward declaration - Problem

Beitrag von listeman »

Hallo Leute,

mein Problem dreht sich nicht direkt um die eigentliche forward declaration. Die habe ich richtig (denke/hoffe ich zumindest).
Mein Problem ist, dass, wenn ich in meinem Hauptfenster das Einstellungenfenster aufrufen möchte, dann stürzt das gesamte Programm ab... doch ich weiß ehrlich nicht warum.
Meine Internetsuche brachte mich zu mehreren Tutorials bezüglich forward declaration, aber mein Problem dreht sich ja nicht direkt darum...

Hier ist der fragliche Quellcode:

mainwindow.h

Code: Alles auswählen

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
...
namespace Ui {

	class MainWindow;

}

class Preferences;
...
class MainWindow : public QMainWindow {

	Q_OBJECT
...
public:
	Preferences *pref;
...
};

#endif // MAINWINDOW_H
preferences.h

Code: Alles auswählen

#ifndef PREFERENCES_H
#define PREFERENCES_H

#include <QDialog>

namespace Ui {
    class Preferences;
}

class MainWindow;

class Preferences : public QDialog {

    Q_OBJECT

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

private:
    Ui::Preferences *ui;

};

#endif // PREFERENCES_H
mainwindow.cpp:

Code: Alles auswählen

#include "mainwindow.h"
#include "preferences.h"
#include "ui_mainwindow.h"
...
void MainWindow::ShowPreferences() {
	pref->show();
}
...
preferences.cpp:

Code: Alles auswählen

#include "preferences.h"
#include "mainwindow.h"
#include "ui_preferences.h"

Preferences::Preferences(QWidget *parent) : QDialog(parent), ui(new Ui::Preferences) {

    ui->setupUi(this);

}


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


Wenn ich (per Menu) im Hauptfenster die Funktion ShowPreferences() aufrufe, dann stürzt das Programm ab... ich weiß net mehr weiter...
Wäre echt super, wenn jemand Rat weiß :-)

Grüße
listeman
TSS
Beiträge: 73
Registriert: 24. November 2009 15:40
Kontaktdaten:

Beitrag von TSS »

Hast du im Konstruktor der Klasse MainWindow sowas wie

Code: Alles auswählen

pref=new Preferences();
stehen? Ansonsten ist es kein Wunder, dass das Programm abstürzt, es kann kein Objekt angezeigt werden, das eigentlich nicht existiert.
listeman
Beiträge: 74
Registriert: 19. Mai 2009 13:54
Kontaktdaten:

Beitrag von listeman »

Oh mann, was ich bin ich doch blöd^^... klar, das habe ich vergessen, jetzt klappt es...

Vielen Dank! :-)

Grüße
listeman
RHBaum
Beiträge: 1436
Registriert: 17. Juni 2005 09:58

Beitrag von RHBaum »

Und falls du nicht willst, das Dir das öfters passiert:

C++ Code Schreiben !

Rohe Zeiger + haendische dynamische Allokierung sind Böse ! :twisted:

Besser: Bei dyn Allokierung (wenn man sie denn selber machen muss) Smartpointer mit besitzsemantik verwenden !

also z.b. std:auto_ptr aus der STL, oder besser Ihre Pendants aus der boost oder TR1.
Grade bei PIMPL bietet sich das an :-)
Wobei ich grad echt ned versteh, warum Du die generierte GUI vom Designer in deinem Dialog pimplst ? was steht denn da boesses drin ?

Ciao ...
Antworten