[gelöst] Cursor in SpinBox

Alles rund um die Programmierung mit Qt
Antworten
moo
Beiträge: 12
Registriert: 10. Mai 2005 16:34
Wohnort: Ulm

[gelöst] Cursor in SpinBox

Beitrag von moo »

Hallo!

Ich hab in meinem DialogFenster mehrere SpinBoxen. Wenn ich in eine der Boxen klicke um per Hand den Wert zu ändern, komme ich mit dem Cursor (trotz Enter-Drücken und auf den Dialog klicken) nicht mehr aus der Box heraus. Ich kann max. noch in die anderen SpinBoxen wechseln. Das gefällt mir nicht, man kommt doch normalerweise nach ENTER wieder da raus. Muss man dafür eine bestimmte Einstellung vornehmen?

Hoffe ihr könnt mir helfen! :)

moo
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag von FlorianBecker »

Ich weiß nun nicht wirklich, ob Enter das ist und ob es das kann, aber sollte Enter nicht so funktionieren, wie du das möchtest, dann musst einfach nur die keyPressEvent Methode reimplementieren. Ich glaube die heißt so, zumindest so ähnlich ist in QWidget. Und dann mit event -> key() == Qt::Key_Enter oder so ähnlich. Da gibt es das ein oder andere Beispiel in der Onlinehilfe.
moo
Beiträge: 12
Registriert: 10. Mai 2005 16:34
Wohnort: Ulm

Beitrag von moo »

Da hab ich auch schon dran gedacht, aber ich hab halt keine Ahnung "wem ich da was" sagen soll...also ob ich dem Cursor, der SpinBox oder gar dem Widget was zuweisen soll...finde auch leider nix entsprechendes in den Hilfen...
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag von FlorianBecker »

Du musst das dem SpinBox "zuweisen".

Code: Alles auswählen

class MySpinBox : public QSpinBox {

  protected:
    void keyPressEvent( QKeyEvent *event );
}
Und im Source:

Code: Alles auswählen

void MySpinBox::keyPressEvent( QKeyEvent *event ) {

  if ( event -> key() == Qt::Key_Enter )
    qDebug( "Enter wurde gedrückt" );
}
Und in der Hilfe:
http://doc.trolltech.com/4.0/qwidget.html#keyPressEvent
http://doc.trolltech.com/4.0/qkeyevent.html

Wem du was sagen sollst? Mh, ein Fehler ist das noch nicht, da es nicht unmöglich ist hier eine Lösung zu schaffen. Wenn es ein wirklicher Fehler ist, den du alleine auch schon nicht mehr aus bügeln kannst, dann schreibst den einfach an die Trolle. Oder meinst du mit deinem Spruch etwas anderes?
moo
Beiträge: 12
Registriert: 10. Mai 2005 16:34
Wohnort: Ulm

Beitrag von moo »

FlorianBecker hat geschrieben:Und im Source:

Code: Alles auswählen

void MySpinBox::keyPressEvent( QKeyEvent *event ) {

  if ( event -> key() == Qt::Key_Enter )
    qDebug( "Enter wurde gedrückt" );
}
Schon klar, aber mir geht es eher darum was ich der SpinBox "zuweisen" muß, damit der Cursor nicht mehr drin steht.
FlorianBecker hat geschrieben: Wem du was sagen sollst? Mh, ein Fehler ist das noch nicht, da es nicht unmöglich ist hier eine Lösung zu schaffen. Wenn es ein wirklicher Fehler ist, den du alleine auch schon nicht mehr aus bügeln kannst, dann schreibst den einfach an die Trolle. Oder meinst du mit deinem Spruch etwas anderes?
Ja, ich meine das anders: "wem" = SpinBox || Widget || Coursor und "was" = meine eigentliche Frage. :wink:
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag von FlorianBecker »

Also deine eigentliche Frage ist: Kommt man denn mit Enter nicht wieder aus der SpinBox heraus?

Du willst dem aktuellen SpinBoxWidget den Focus entziehen?
Nun, da gibt es mehr Möglichkeiten, keinen Focus zuordnen, oder dem Widget sagen, er soll einfach einen Focus weitergehen. Steht genauso in der Dokumentation
moo
Beiträge: 12
Registriert: 10. Mai 2005 16:34
Wohnort: Ulm

Beitrag von moo »

Hmm...ich habe gerade gemerkt, das es vieleicht (auch) an was anderem liegt.
Das Fenster mit den SpinBoxen ist nicht das "Hauptfenster" und wenn ich mit der Maus dieses Fenster aktiviere reagiert er plötzlich auf Enter und ähnliches...zwar noch nicht in der gewünschten Form (der Cursor ist immernoch in der SpinBox), aber vielleicht sollte ich das erstmal lösen...

Soweit also erstmal danke!
Ich meld mich wieder wenn es mit deinen Tipps nicht klappt... :wink:

moo
Antworten