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
Qt Creator Connection
Qt Creator Connection
Zuletzt geändert von BenChi am 16. September 2011 12:08, insgesamt 1-mal geändert.
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
Re: Qt Creator Connection
Mittels Code sollte es auf alle Fälle gehen - siehe http://doc.trolltech.com/4.7/qobject.html#connect und http://doc.trolltech.com/4.7/signalsandslots.html
MfG Christian
'Funktioniert nicht' ist keine Fehlerbeschreibung
'Funktioniert nicht' ist keine Fehlerbeschreibung
Re: Qt Creator Connection
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?
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
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?
Woran liegt das denn?
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
Re: Qt Creator Connection
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?
Wie soll das connect() funktionieren wenn der Receiver ein NULL-Pointer ist?
MfG Christian
'Funktioniert nicht' ist keine Fehlerbeschreibung
'Funktioniert nicht' ist keine Fehlerbeschreibung