Seite 1 von 1

QPushButtons ->Abfrage, welcher Button gedrückt wurde?

Verfasst: 3. Dezember 2006 19:25
von Anfänger
Hallo,
ich habe ein Fenster mit 3 QPushButtons.
Gibt es eine Möglichkeit, dass ich intern eine Abfrage starte, welcher Button vom Benutzer gedrückt wurde?

Lg
Anfänger

Verfasst: 3. Dezember 2006 19:43
von BartSimpson
2. Möglichkeiten.
Entweder alle miteinander vergleichen(sieht etwas doof aus)
oder du steckst sie in eine QButtonGroup.
Dann bekommst du ein Signal entweder mit dem Zeiger auf den Knopf oder mit dessen Nummer, die du beim Erstellen der Gruppe angegeben hast.

Verfasst: 3. Dezember 2006 19:45
von upsala
Oder 3.: Du verwendest QSignalMapper

Verfasst: 3. Dezember 2006 19:56
von BartSimpson
da haste jetzt 3 Möglichkeiten zur Auswahl:)
Und die berühmte qual der Wahl:)

Verfasst: 3. Dezember 2006 20:54
von Anfänger
@BartSimpson:

Wie würde denn das vergleichen aussehen?
Habe es mit
if(button1.clicked()) versucht, aber das klappt ja nicht.

Verfasst: 3. Dezember 2006 20:56
von upsala

Code: Alles auswählen

if (sender()==button1) {
}
if (sender()==button2) {
}
if (sender()==button3) {
}

Verfasst: 3. Dezember 2006 21:01
von Anfänger
Super, vielen Dank. Hat geklappt.

Verfasst: 3. Dezember 2006 21:05
von upsala
Ähm, das ist die unsauberste Methode... Nimm lieber QSignalMapper (macht intern fast das selbe) ist einfacher und schöner...

Verfasst: 3. Dezember 2006 21:06
von BartSimpson
oder besser QButtonGroup.

Code: Alles auswählen

QButtonGroup Schaltfleachen(this);
Schaltfleachen.add(K_Schaltfleache1);
Schaltfleachen.add(K_Schaltfleache2);
Schaltfleachen.add(K_Schaltfleache3);
connect(&Schaltfleachen,SIGNAL(buttonClicked (int )),this,SLOT(gedrueckt(int)) );
XX:gedreuckt(int welcher)
{
switch(welcher)
{
case 0:
             qDebug("Nopf1");
             break;
case 1:
             qDebug("Nopf1");
             break;
case 2:
              qDebug("Nopf1");
             break;
default:
             qFatal("nicht definierter Knopf");
            break;
};
}

Verfasst: 3. Dezember 2006 21:38
von Anfänger
Bin froh, dass das überhaupt funktioniert.
Werde es mal mit QSignalMapper versuchen, ob ich das auch hinbekomme...

Verfasst: 3. Dezember 2006 22:41
von BartSimpson
Im Prinzip kannste beiden Varianten prima erweitern. Und die sind denn auch immer gleich schnell. Denn bei deiner IF "Hilfskonstruktion" kann es bei vielen Schaltflächen schon ziemlich "lange" dauern.