Anzeige:
Ergebnis 1 bis 8 von 8

Thema: QSpinBox reaktion auf Enter-Taste?

  1. #1
    Registrierter Benutzer
    Registriert seit
    17.04.2002
    Beiträge
    185

    QSpinBox reaktion auf Enter-Taste?

    Hallo,
    ich habe hier ein kleines Qt4 Programm. Es gibt eine Spinbox in der man etwas eingeben kann und mit dem dann eine Berechnung durchgeführt wird wenn man auf den "Berechnen"-Button klickt. Alternativ will ich jetzt erreichen, dass auch das drücken der Enter-Taste in der Spinbox, sozusagen als Abschluss der Eingabe, ein clicked Signal des "Berechnen"-Button erzeugt. Leider konnte ich dafür kein passendes Signal der SpinBox finden.

    QAbstractSpinBox::editingFinished() kommt diesem sehr nahe, allerdings reagiert es nicht nur auf die Enter-Taste sondern auch darauf wenn die SpinBox den Fokus verliert.

    Irgendein Tip wie ich mein Ziel erreichen kann?

    Danke!

    For a world where freedom and knowledge survives the compiler! (https://www.fsfe.org)

    If art interprets our dreams, the computer executes them in the guise of programs!

  2. #2
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Versuch mal den "Berechnen" Button als Default zu setzen

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  3. #3
    Registrierter Benutzer
    Registriert seit
    17.04.2002
    Beiträge
    185
    Das mit dem default-Button funktioniert leider nicht, liegt vermutlich daran, dass ich das ganze als QMainWindow implementiert habe und diese default Funktion laut Doku nur in einem Dialog funktioniert.

    For a world where freedom and knowledge survives the compiler! (https://www.fsfe.org)

    If art interprets our dreams, the computer executes them in the guise of programs!

  4. #4
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Hmm, ok

    Probiere das returnPressed Signal des LineEdit (QSpinBox::lineEdit())

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  5. #5
    Registrierter Benutzer
    Registriert seit
    17.04.2002
    Beiträge
    185
    Zitat Zitat von anda_skoa Beitrag anzeigen
    Probiere das returnPressed Signal des LineEdit (QSpinBox::lineEdit())
    Verstehe ich das richtig, ich soll das returnPressed Signal von QLineEdit für meine QSpinBox verwenden? Wie macht man denn sowas?

    For a world where freedom and knowledge survives the compiler! (https://www.fsfe.org)

    If art interprets our dreams, the computer executes them in the guise of programs!

  6. #6
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    QSpinBox hat als Teil von sich einen QLineEdit, den man über die Methode lineEdit() erhalten kann.

    Der LineEdit hat dann wiederrum das angesprochene Signal

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  7. #7
    Registrierter Benutzer
    Registriert seit
    17.04.2002
    Beiträge
    185
    ah, OK. Ich hatte das erst über die Doku nicht gefunden, da die Methode lineEdit() erst in qabstractspinbox kommt von dem QSpinBox abgeleitet ist.

    Ich habe das jetzt versucht wie ein normales Signal im Konstruktor des MainWindow zu verbinden:
    Code:
        QObject::connect(ui.reachedSpinBox->lineEdit(), SIGNAL(returnPressed()),
                         ui.calcButton, SLOT(click()));
    Beim Übersetzen bekomme ich aber diese Fehlermeldung:

    Code:
    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

    For a world where freedom and knowledge survives the compiler! (https://www.fsfe.org)

    If art interprets our dreams, the computer executes them in the guise of programs!

  8. #8
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Hmm, das hatte ich übersehen.

    Dann am besten von QSpinBox ableiten und ein eigenes Signal emitten, wenn der LineEdit seines emittet.
    Dazu kann man direkt das eine Signal mit dem eigenen verbinden.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •