[gelöst] QTJambi: pushButtons connecten

Alles zum Qt Framework für Java
Antworten
Psypointer
Beiträge: 10
Registriert: 5. Juni 2007 15:28

[gelöst] QTJambi: pushButtons connecten

Beitrag 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
Zuletzt geändert von Psypointer am 11. Juni 2007 23:00, insgesamt 1-mal geändert.
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

Ich hoffe einfach mal das es bei QtJambi auch einen QSignalMapper gibt.
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.
Psypointer
Beiträge: 10
Registriert: 5. Juni 2007 15:28

Beitrag 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
qtNiko
Beiträge: 216
Registriert: 6. April 2007 21:26
Wohnort: München

Beitrag 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.
Gruß von qtNiko

Core i5 760, GT 240, Suse Linux11.3, Eclipse-CDT-Helios, QT4.4, QT-Integration
Psypointer
Beiträge: 10
Registriert: 5. Juni 2007 15:28

Beitrag 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
qtNiko
Beiträge: 216
Registriert: 6. April 2007 21:26
Wohnort: München

Beitrag 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 :)
Gruß von qtNiko

Core i5 760, GT 240, Suse Linux11.3, Eclipse-CDT-Helios, QT4.4, QT-Integration
Psypointer
Beiträge: 10
Registriert: 5. Juni 2007 15:28

Beitrag 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
Zuletzt geändert von Psypointer am 24. Juni 2007 22:18, insgesamt 2-mal geändert.
ArneStocker
Beiträge: 300
Registriert: 3. November 2004 16:15
Wohnort: Berlin

Beitrag 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
Psypointer
Beiträge: 10
Registriert: 5. Juni 2007 15:28

Beitrag von Psypointer »

Stimmt, Link hat sich geändert. Habe es korrigiert.

psypointer
Antworten