Qt4 QSpinBox auf return Taste reagieren

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
BeS
Moderator
Beiträge: 3236
Registriert: 17.04.2002 18:30:21
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Stuttgart
Kontaktdaten:

Qt4 QSpinBox auf return Taste reagieren

Beitrag von BeS » 05.10.2006 17:58:23

Hallo,
ich versuche mich zur Zeit etwas an Qt4.
Ich stehe jetzt vor einem kleinen Problem. Ich habe eine QSpinBox, wenn ich darin die Eingabe mit der Return-Taste bestätige, will ich dass das gleiche passiert wie wenn ich einen Button geklickt hätte.
Die Frage ist wie ich das erreichen kann. Im Designer konnte ich kein passendes Signal finden das man direkt hätte mit dem Button verbinden können. In der Doku habe ich jetzt entdeckt, dass die QSpinBox von einer QAbstractSpinBox abgeleitet ist welche mir mit "QLineEdit * lineEdit () const" Zugriff auf das verwendete QLineEdit gibt und dieses hätte dann ein returnPressed() Signal.

Die Frage ist nur wie man da rankommt? Über den Designer, mit dem ich normal immer solche direkten Verbindungen definiere, konnte ich keine Möglichkeit finden. Wenn ich es im Quellcode so versuche:

Code: Alles auswählen

QObject::connect(ui.reachedSpinBox->lineEdit(), SIGNAL(returnPressed()),
                 ui.calcButton, SLOT(click()));
Bekomme ich eine Fehlermeldung:

Code: Alles auswählen

mainwindow.cpp: In constructor ‘MainWindow::MainWindow(Marks*, QWidget*)’:
/usr/include/qt4/QtGui/qabstractspinbox.h:114: error: ‘QLineEdit* QAbstractSpinBox::lineEdit() const’ is protected
mainwindow.cpp:12: error: within this context
So, jetzt weiß ich nichtmehr weiter. Es kann doch nicht so schwer sein in einem Eingabeelement auf die Return Taste zu reagieren. Kann mir hier vielleicht jemand weiter helfen?

Danke!
Deine Unterstützung für Freie Software kostet dich nur wenige Minuten: www.fsfe.org/support

Ich spreche von Freier Software!

Benutzeravatar
sebas
Beiträge: 419
Registriert: 15.01.2004 19:02:29
Wohnort: Nijmegen / NL
Kontaktdaten:

Beitrag von sebas » 09.10.2006 20:02:09

Wenn ich mich recht entsinne kannst du subclassen und returnPressed() dann überladen mit deinem Code (der dann z.B. ein buttonClicked Signal sendet).
Magic is always the best solution -- especially reliable magic.

Antworten