Slots in C++ Code

Alles rund um die Programmierung mit Qt
Antworten
gundi_
Beiträge: 28
Registriert: 16. September 2008 14:04

Slots in C++ Code

Beitrag von gundi_ »

Hallo Leute,


ich habe einen public Slot in meiner Applikation implementiertt. Ich will diesen Slot im Qt-Designer verwenden. Ich baue das Projekt aber im Qt-Designer kann ich den Slot nicht sehen bzw. nicht wählen. Danach habe ich ins ui-h-File geschaut, da war dieser auch nicht enthalten. Muss dieser nicht autom. in dieses File geschrieben werden.

Wie ist denn der Schritt von der eigenen Appl. zum Qt-Designer.

Ich danke euch!
solarix
Beiträge: 1133
Registriert: 7. Juni 2007 19:25

Beitrag von solarix »

ich habe einen public Slot in meiner Applikation implementiertt.
eine genauere Beschreibung (Klassen, was für ein "public Slot", code, usw.) wäre äusserst hilfreich... (meine Kristallkugel ist wegen Überlast in Reparatur, weswegen Hellsehen z.Z. nicht möglich ist).
Wie ist denn der Schritt von der eigenen Appl. zum Qt-Designer.
http://doc.trolltech.com/4.4/examples.html#qt-designer
dramen
Beiträge: 5
Registriert: 8. April 2008 03:02
Wohnort: Wien

Beitrag von dramen »

im designer selber siehst du die eigenen slots nicht, spielt aber nicht wirklich eine rolle, es ist total einfach zu implementieren.

am besten ist du verwendest qdevelop (gibt's für linux und windows). das programm erstellt dir die notwendigen vorlagen.
die eigenen slots musst du allerdings selber implentieren.

in der headerdatei unter private slots:

void meine_funtion();

und in der cpp-datei:

void DialogImpl::meine_funktion() {
// hier dein code z.B.:
textEdit->setText("blabla");
}

... wobei textEdit der Name des mit designer erstellten widgets ist.
wenn du qdevelop verwendest kannst du mit "methode erstellen" meine_funktion() automatisch erstellen lassen.

UND: im Konstruktor:
connect(pushButton,SIGNAL(clicked()),this,SLOT(meine_funktion()));
gundi_
Beiträge: 28
Registriert: 16. September 2008 14:04

Beitrag von gundi_ »

Ich danke dir.

Ok, ich habe deinen Vorschlag implementiert. Ich mache es etwas komplizierter, weil ich connectNotify verwenden will. Dies habe ich auch implementiert. Wenn eine neue Verbindung/Signal auftritt, wird connectNotify aufgerufen. Ich habe die Funktion überschrieben und kappe in der Funktion die bestehenden Verbindungen.

Aber die connectNotify wird nicht aufgerufen, wenn ich das Programm ausführe.

Wisst ihr warum?
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

Tja, ich sehe keinen Fehler.
Die deutsche Schriftsprache ist case-sensitive. Außerdem gibt es eine Interpunktionsnorm. Wenn manch einer seine Programme genauso schlampig schreibt, wie sein Posting hier, dann sollte er es lieber bleiben lassen.
gundi_
Beiträge: 28
Registriert: 16. September 2008 14:04

Beitrag von gundi_ »

Es sind ja auch keine Fehler vorhanden. Ich habe folgendes gemacht:

Ich habe einen Pushbutton angelegt (custom widget), der beim Klicken einfach mit cout (Debug) einen Text ausgeben soll. Dafür habe ich den eigenen Slot in der cpp implementiert. Den connect-Aufruf im Konstruktor habe ich weggelassen, da ich den Slot auch im Designer angelegt habe.

Gleichzeitig werden alle Signale, die mit diesem Button verbunden sind, gekappt.

Da ist kein Compiler-Fehler. Sondern einfach Funktionsfehler. Wenn ich den Button anklicke, sehe ich den Text mit dem Aufruf von cout nicht.
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

gundi_ hat geschrieben:Da ist kein Compiler-Fehler. Sondern einfach Funktionsfehler.
Ja genau. Und da du noch keinen Code geliefert hast, sehen wir keinen Fehler. Ich kann nur eins empfehlen, vergiss den Designer was connections angeht. Schreib die connects selbst, wenn es eigene Slots angeht, dann kannst Du auch gleich prüfen ob die connects funktionieren. Wenn ein connect nicht zustande kommt, dann wird deine Funktion auch nie aufgerufen.
Die deutsche Schriftsprache ist case-sensitive. Außerdem gibt es eine Interpunktionsnorm. Wenn manch einer seine Programme genauso schlampig schreibt, wie sein Posting hier, dann sollte er es lieber bleiben lassen.
Antworten