Moin.
Ich habe ein QSpinbox, welche nur über die beiden kleinen Knöpf bedient wird. Wenn ich nun einen der beiden Knöpfe betätige, ist der Text der SpinBox automatisch ausgewählt. Außerdem kann ich den Text sowohl durch Doppelklicken als auch mittels der Maus auswählen.
Wie kann ich diese Sachen unterbinden?
Vielen Dank.
[gelöst]QSpinBox: Text soll nicht auswählbar sein
[gelöst]QSpinBox: Text soll nicht auswählbar sein
Zuletzt geändert von rubikon am 15. November 2011 11:59, insgesamt 1-mal geändert.
Re: QSpinBox: Text soll nicht auswählbar sein
Aus: QAbstractSpinBox Class Reference ->
void setReadOnly ( bool r )
Damit solltest du die Editierbarkeit rausbekommen,
und damit es keinen Fokus bekommt:
Aus QWidget Class Reference
void setFocusPolicy ( Qt::FocusPolicy policy )
void setReadOnly ( bool r )
Damit solltest du die Editierbarkeit rausbekommen,
und damit es keinen Fokus bekommt:
Aus QWidget Class Reference
void setFocusPolicy ( Qt::FocusPolicy policy )
Qt::TabFocus 0x1 the widget accepts focus by tabbing.
Qt::NoFocus 0 the widget does not accept focus. <- Was du brauchst
Re: QSpinBox: Text soll nicht auswählbar sein
setReadOnly 'verschlimmert' die Situation noch: Man kann dann die Spinbox nicht mehr über die Knöpfe bedienen, aber immer noch den Text markieren...
setFocusPolicy hat auch keine Wirkung gezeigt.
Habe mal versucht das auf das SubControl LineEdit anzuwenden:
Leider auch ohne Erfolg
setFocusPolicy hat auch keine Wirkung gezeigt.
Habe mal versucht das auf das SubControl LineEdit anzuwenden:
Code: Alles auswählen
QLineEdit *lineEdit = ui->spinBox->findChild<QLineEdit *>("qt_spinbox_lineedit");
lineEdit->setFocusPolicy(Qt::NoFocus);
lineEdit->setReadOnly(true);
Re: QSpinBox: Text soll nicht auswählbar sein
setEnabled(false) ... ?
Re: QSpinBox: Text soll nicht auswählbar sein
Das bring leider auch nichts.
Ich habe ein Lösung gefunden, welche zwar nicht besonders elegant ist, aber funktioniert.
Ich habe bei dem LineEdit ein Eventfilter installiert und in diesem folgendes gemacht:
Ich habe ein Lösung gefunden, welche zwar nicht besonders elegant ist, aber funktioniert.
Ich habe bei dem LineEdit ein Eventfilter installiert und in diesem folgendes gemacht:
Code: Alles auswählen
if(object == ui->spinBox->findChild<QLineEdit *>("qt_spinbox_lineedit"))
ui->spinBox->findChild<QLineEdit *>("qt_spinbox_lineedit")->setSelection(0,0);