Seite 1 von 1

[gelöst] QTJambi: pushButtons connecten

Verfasst: 5. Juni 2007 15:39
von Psypointer
Hallo Zusammen,

ich arbeite mich gerade in QT-Jambi ein. Ich habe vorher nur Java programmiert und mit QT noch keine Erfahrung gesammelt. Das QT-Prinzip (Slots / Signals) ist mir jedoch nicht ganz fremd. Ich habe jetzt QT-Jambi in dem Eclipse eingebaut und bisher funktioniert es auch sehr gut. Zur Zeit schreibe ich zum lernen einen kleinen Taschenrechner. Dieser hat verschiedene QPushButtons.

Ich möchte, wenn der PushButton gedrückt worden ist, eine bestimmte Funktion ausführen. Dazu habe ich ein

Code: Alles auswählen

ui.pushButton.clicked.connect(this,"foo()");
in meiner Hauptklasse eingefügt. Das klappt ebenfalls gut. Allerdings hilft mir das nicht bei mehr als einem Button weiter, da ich immer nur einen an eine Methode verbinden kann. Desweiteren bekomme ich es nicht hin, das pushButtonobjekt an die verbundene Funktion zu übergeben.

Meine Ursprungsidee war, alle PushButtons an eine Funktion zu connecten und dann einfach über eine Objektreferenz auf den PushButton in der Funktion kurz anzufragen, welchen Wert dieser hat und dann damit passend zu interagieren.

Wie realisiert man so etwas in QT(Jambi)?

Danke,

Psypointer

Verfasst: 5. Juni 2007 15:43
von macman
Ich hoffe einfach mal das es bei QtJambi auch einen QSignalMapper gibt.

Verfasst: 7. Juni 2007 15:17
von Psypointer
macman hat geschrieben:Ich hoffe einfach mal das es bei QtJambi auch einen QSignalMapper gibt.
Gibt es, aber nicht gut dokumentiert. Die Dokumentation baut momentan noch auf C++ auf. Für mich als Einsteiger nicht gerade einfach.

Gibt es irgendwo ein kleines Howto für QT-Jambi + QSignalMapper? Google hat mir bisher nicht sonderlich weitergeholfen.

Psypointer

Verfasst: 8. Juni 2007 00:57
von qtNiko
Im QtAssistant gibt es ein Beispiel.

Ich bin auch Anfänger und hab's damit hingekriegt. Ist einfach und funktioniert. :)
Dennoch muss ich eine Bemerkung loswerden. Es wäre viel einfacher, wenn Qt jedem PushButton, CheckBox, etc. ein ID mitgäbe, das der Entwickler auf beliebige Werte setzen kann. Dann müsste man nur noch alle PushButtons mit einem Slot verbinden, der anhand der ID erkennt, welche Taste geklickt wurde.

Verfasst: 9. Juni 2007 23:35
von Psypointer
qtNiko hat geschrieben:Im QtAssistant gibt es ein Beispiel...
Ich find da nur C++ Beispiele. Kannst du mir bitte, wenn es ein Javabeispiel ist, dieses hier reinkopieren?

Danke,

Psypointer

Verfasst: 10. Juni 2007 00:06
von qtNiko
Richtig, das Beispiel, das ich meinte, ist für C++.
Leider habe ich mit Java nichts am Hut. Da kann ich nur empfehlen, weiter nach Beispielen zu suchen.
Viel Glück dabei :)

Verfasst: 11. Juni 2007 22:59
von Psypointer
So, ich habe das Problem gelöst bekommen..


Einen Beispielcode können Interessierte unter:

http://www.bebytu.de/svn/JQT-Calc/src/d ... TCalc.java

finden :) Aktuelle Revision ist 119, falls mal jemand in ein paar Monaten hier reinschaut und das Projekt vlt. nicht mehr da ist / geändert worden ist.

Psypointer

Verfasst: 23. Juni 2007 22:32
von ArneStocker
Der Link zum Beispiel funktioniert irgendwie nicht.
Vielleicht kann man es ja kurz darstellen ...

Code: Alles auswählen

this.m_ui.ButtonEins.clicked.connect(this,"NurEinSlot()");
this.m_ui.ButtonZwei.clicked.connect(this,"NurEinSlot()");
...
public void NurEinSlot() {
    QSignalEmitter sender = QObject.signalSender();
    if (this.m_ui.ButtonEins == sender) {
      ... 
    }
    else if (this.m_ui.ButtonZwei == sender) {
      ...
    }
@qtNiko
Eine Referenz ist doch viel besser als eine ID, oder habe ich da was falsch verstanden ?

gruß Arne

Verfasst: 24. Juni 2007 22:17
von Psypointer
Stimmt, Link hat sich geändert. Habe es korrigiert.

psypointer