Seite 1 von 1

simples Problem : ein widget öffnet ein anders, aber wie ?

Verfasst: 28. September 2006 00:50
von paul
Hallo,

ich habe ein recht simples problem, komme allerdings mit der dokumentation und den beispielen nicht richtig weiter:

ich hab zwei simple qwidgets erstellt :

Code: Alles auswählen


class StartWidget : public QWidget {
	Q_OBJECT

public :
	StartWidget(QWidget *parent = 0);

	QPushButton *newWidgetButton;


public slots :
	void openWidget(void);
};


StartWidget::StartWidget(QWidget *parent)
	: QWidget(parent)
{
	setGeometry(300,200, 100,100);

	newWidgetButton = new QPushButton("New Widget");

	connect(loadGameButton, SIGNAL(clicked()), this,SLOT(openWidget()));
}

void StartWidget::openWidget(void) {
	MainWidget main_widget;

        main_widget.show();

	this->close();
}

und

Code: Alles auswählen

class MainWidget : public QWidget {

public :
	MainWidget(QWidget *parent = 0);
};


MainWidget::MainWidget(QWidget *parent) 
	: QWidget(parent)
{
        setGeometry(300,200, 100,100);
}

dann rufe das erste in der main.cpp auf:

Code: Alles auswählen

#include "main_widget.h"
#include "start_widget.h"

#include <QApplication>


int main(int argc, char *argv[])
{
        QApplication app(argc, argv);
	StartWidget start_widget;
        start_widget.show();
        return app.exec();
}

mein ziel ist es, dass nachdem der newWidgetButton gedrückt wurde, sich das StartWidget schließt und das MainWidget öffnet (und sichtbar wird).

leider erziele ich diesen effekt aber nicht.


weiß jemand rat ?


gruß
paul

Verfasst: 28. September 2006 07:27
von macman
Du erstellst dein main_widget in openWidget. Was glaubst Du wie lange das existiert?

Verfasst: 28. September 2006 18:07
von Mister_Crac
macman hat geschrieben:Du erstellst dein main_widget in openWidget. Was glaubst Du wie lange das existiert?
Schon klar, Gültigkeitsbereich von Objekten und so.
Aber: Was ist dann die Lösung? Beide Widgets sequenziell in main() instanziieren? Und das eine erstmal nicht anzeigen lassen, also nur vom ersten show() aufrufen und später dann vom angezeigten ersten Widget aus die Methode show() für das zweite Widget aufrufen?

Verfasst: 28. September 2006 23:48
von paul
hi,

genau auf die art hab ich es nun gelöst: das MainWidget hab ich in main.cpp erzeugt und über den konstruktor an das StartWidget übergeben, das dann MainWidget->show() aufruft und sich selbst mit close() schließt.
ich bin offen für bessere lösungen.



danke für die antworten =)


gruß
paul