trotz QPushButton->setDefault(true) keine Aktion bei Ente

Alles rund um die Programmierung mit Qt
Antworten
ctwx
Beiträge: 2
Registriert: 4. Mai 2010 12:11

trotz QPushButton->setDefault(true) keine Aktion bei Ente

Beitrag von ctwx »

Hallo,

ich programmiere zurzeit mit ein paar Freunden einen Spanisch-Konjugationstrainer mit Qt. Den ersten Dialog den man sieht, ist der Login-Dialog, welcher (im groben) 2 Labels, 2 LineEdits und 2 QPushButton enthält.
Einer der Buttons ist der Login-Button, der, wenn man Enter drückt, betätigt werden soll. Laut meinem Buch („C++ GUI Programming with Qt 4 Second Edition“) funktioniert es indem ich einfach die setDefault(true)-Methode meines Login-Buttons aufrufe. Doch in der Praxis funktioniert es nicht.

Hier mein Konstruktor: http://pastebin.com/WMqKbxdJ
Wie man sieht, setze ich auf Zeile 75 den Login-Buttons als Default. Optisch passiert das auch im Dialog, aber wenn ich Enter drücke passiert nichts. Erst wenn ich mit der Maus draufklicke.

Woran liegt das?

Danke,

Gruß
ctwx
solarix
Beiträge: 1133
Registriert: 7. Juni 2007 19:25

Beitrag von solarix »

Wenn auf "Ente" nichts passiert solltest du mal "Duck" versuchen...
Im ernst: in der Doku steht:
http://doc.qt.nokia.com/4.6/qpushbutton.html#default-prop hat geschrieben: The default button behavior is provided only in dialogs
Du hast aber anscheinend ein Widget:

Code: Alles auswählen

login::login(QWidget *parent)
        :       QWidget(parent)
Könnte es daran liegen?
ctwx
Beiträge: 2
Registriert: 4. Mai 2010 12:11

Beitrag von ctwx »

Es könnte eventuell daran liegen, aber ich kenne es nur so. Ich habe außerdem das Flag auch schon auf Qt::Dialog gesetzt und es änderte sich nichts. :?

Ich habe auch ein Testprogramm geschrieben und dort funktioniert es wie gewünscht.
Testprogramm: Noch Ideen?

Danke,

Gruß
ctwx
solarix
Beiträge: 1133
Registriert: 7. Juni 2007 19:25

Beitrag von solarix »

Ja klar funktioniert es dort wie gewünscht.. es IST ja auch ein Dialog:

Code: Alles auswählen

pushButtonDialog::pushButtonDialog(QWidget *parent)
        : QDialog(parent) // das IST ein Dialog...

Code: Alles auswählen

login::login(QWidget *parent)
        :       QWidget(parent) // das ist _KEIN_ Dialog sondern ein Widget!!
hth..
Antworten