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

Alles rund um die Programmierung mit Qt
Antworten
Anfänger
Beiträge: 34
Registriert: 11. März 2005 18:17

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

Beitrag 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
BartSimpson
Beiträge: 1379
Registriert: 6. November 2004 12:03
Kontaktdaten:

Beitrag 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.
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Oder 3.: Du verwendest QSignalMapper
BartSimpson
Beiträge: 1379
Registriert: 6. November 2004 12:03
Kontaktdaten:

Beitrag von BartSimpson »

da haste jetzt 3 Möglichkeiten zur Auswahl:)
Und die berühmte qual der Wahl:)
Anfänger
Beiträge: 34
Registriert: 11. März 2005 18:17

Beitrag von Anfänger »

@BartSimpson:

Wie würde denn das vergleichen aussehen?
Habe es mit
if(button1.clicked()) versucht, aber das klappt ja nicht.
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Code: Alles auswählen

if (sender()==button1) {
}
if (sender()==button2) {
}
if (sender()==button3) {
}
Anfänger
Beiträge: 34
Registriert: 11. März 2005 18:17

Beitrag von Anfänger »

Super, vielen Dank. Hat geklappt.
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Ähm, das ist die unsauberste Methode... Nimm lieber QSignalMapper (macht intern fast das selbe) ist einfacher und schöner...
BartSimpson
Beiträge: 1379
Registriert: 6. November 2004 12:03
Kontaktdaten:

Beitrag 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;
};
}
Anfänger
Beiträge: 34
Registriert: 11. März 2005 18:17

Beitrag von Anfänger »

Bin froh, dass das überhaupt funktioniert.
Werde es mal mit QSignalMapper versuchen, ob ich das auch hinbekomme...
BartSimpson
Beiträge: 1379
Registriert: 6. November 2004 12:03
Kontaktdaten:

Beitrag 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.
Antworten