Seite 1 von 1

Qt Creator Connection

Verfasst: 16. September 2011 08:18
von BenChi
Hallo,

ich arbeite mich nun eine Weile in Qt ein (habe es ihm Studium kennen gelernt).
Nun habe ich ein wenig mit dem Qt Creator rumprobiert, und soweit klappt auch alles ganz gut.
Nun wollte ich mal zwei Widgets mit dem Signal/Slot Mechanismus verbinden, und zwar, indem in einen PushButton auf dem einen Widget mit dem anderen Widget kombiniere (Pushbutton (clicked()) -> Widget (show()) , also ich klicke auf den Button, dann zeigt bzw. öffnet sich das andere Widget.
Leider kann ich im Creator ja das Signal des Pushbuttons nicht über das Widget hinaus aufs andere Widget ziehen.
Wie kann ich dies sonst im Qt Creator anstellen?

Danke schon mal für eure Hilfe

Re: Qt Creator Connection

Verfasst: 16. September 2011 08:42
von Christian81

Re: Qt Creator Connection

Verfasst: 16. September 2011 12:31
von BenChi
Also habs mir durchgelesen und ausprobiert, funktioniert aber nicht:

class neu : public QWidget
{
Q_OBJECT

public:
neu();
~neu();
neu* naechstesFenster; //Dieses Fenster soll dann aufgehen mit dem slot show();

signals:
void buttonClicked();

private:
QPushButton* Button;
};

in main weiße ich dem pointer naechstesFenster denn den Wert zu (der this Zeiger der anderen Instanz).
außerdem ist dies der Konstruktor der Klasse neu:

neu::neu()
{
naechstesFenster = NULL;
Button = new QPushButton(this);
QObject::connect(Button, SIGNAL(clicked()), this, SLOT(close()));
QObject::connect(Button, SIGNAL(clicked()), naechstesFenster, SLOT(close()));
}



MOC, kompiliert und gelinkt wird ohne Probleme, nur der Klick auf den Button schließt eben nur das eine Fenster, öffnet aber nicht das andere.
Was mache ich da falsch?

Re: Qt Creator Connection

Verfasst: 16. September 2011 14:14
von BenChi
Ich hab grad was ausbrobiert: Wenn ich die QObject::Connect in der main funktion schreibe, dann gehts, wenn ich die aber im Konstruktor der Klasse ausführen lasse, tut sich nichts.
Woran liegt das denn?

Re: Qt Creator Connection

Verfasst: 16. September 2011 16:27
von Christian81
Wenn man das Program auf der Kommandozeile ausführt sieht man Fehler die auch beachtet werden sollten. Außerdem gibt connect() ein bool zurück welches man zumindest in Fehlerfällen einfach mal auswerten sollte...
Wie soll das connect() funktionieren wenn der Receiver ein NULL-Pointer ist?