Seite 1 von 1

Programm Beenden ?!

Verfasst: 6. März 2008 21:54
von scarfish
Hi, hab hier winziges Programm, bei dem ich es irgendwie nicht schaffe es über einen Button zu beenden, bzw. das einzige Widget zu schließen, und ich wollte einfach mal fragen, ob mir jemand sagen kann, was da in meinem Code nicht stimmt. Also hier mal der Code:

test.cpp

Code: Alles auswählen

#include <QApplication>

#include <QPushButton>
#include <QVBoxLayout>
#include <QObject>
#include <QWidget>
#include "mywidget.h"

int main(int argc, char *argv[])
{

	QApplication app(argc, argv);	

	MyWidget* element=new MyWidget;      	

	element->show();

	return app.exec();

}
mywidget.h

Code: Alles auswählen

#ifndef MYBUTTON_H
#define MYBUTTON_H

#include <QWidget>
#include <QVBoxLayout>
#include <QLabel>
#include <QPushButton>
#include <QObject>

class MyWidget : public QWidget
{
	Q_OBJECT
	public:
	QVBoxLayout* VLayout;
	QLabel* label;
	MyWidget();
	public slots:
	void test();
};
#endif
mywidget.cpp

Code: Alles auswählen

#include "mywidget.h"
MyWidget::MyWidget() : QWidget()
{
	VLayout = new QVBoxLayout(this);
	label = new QLabel("test1");
	QPushButton* Button1 = new QPushButton("Button 1");
	QPushButton* Button2 = new QPushButton("Button 2");
	Button1->resize(100,30);
	Button2->resize(200,60);
	
	VLayout->addWidget(label);
	VLayout->addWidget(Button1);
	VLayout->addWidget(Button2);
	
	setLayout(VLayout);
	QObject::connect( Button1, SIGNAL(clicked()),
			  this, SLOT( test())	);
	QObject::connect( Button2, SIGNAL(clicked()),
			  this, SLOT( quit())	);
	
}

void MyWidget::test()
{
	label -> setText("test2");
}
achja, benutze Linux, falls das irgendwie interessant dafür ist.
MfG scarfish

Verfasst: 6. März 2008 22:24
von upsala
Du bekommst 100%ig auf der Konsole die Meldung, daß der Slot quit() nicht existiert, oder?

Der Slot, den du suchst, findest du bei QApplication...

Verfasst: 6. März 2008 23:02
von scarfish
oh, du hast recht, bin noch nicht lang dabei, und wusste gar nicht, das da beim starten auch noch debug informationen in der Konsole auftauchen.
Nur in dem Buch was ich lese, wird auch ein Widget auf diesem Weg beendet und es stand ja auch drin, das wenn das Haupt Widget beendet wird, auch das ganze Programm beendet wird.

Edit: Jo, also habs jetzt mit close ersetzt, wieder was gelernt^^ Dankö