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

Alles rund um die Programmierung mit Qt
Antworten
paul
Beiträge: 2
Registriert: 28. September 2006 00:24

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

Beitrag 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
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

Du erstellst dein main_widget in openWidget. Was glaubst Du wie lange das existiert?
Mister_Crac
Beiträge: 28
Registriert: 10. August 2006 12:17

Beitrag 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?
paul
Beiträge: 2
Registriert: 28. September 2006 00:24

Beitrag 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
Antworten