[gelöst]QSpinBox: Text soll nicht auswählbar sein

Alles rund um die Programmierung mit Qt
Antworten
rubikon
Beiträge: 89
Registriert: 27. Mai 2010 13:23

[gelöst]QSpinBox: Text soll nicht auswählbar sein

Beitrag von rubikon »

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.
Zuletzt geändert von rubikon am 15. November 2011 11:59, insgesamt 1-mal geändert.
Eric.E
Beiträge: 16
Registriert: 10. November 2011 11:06

Re: QSpinBox: Text soll nicht auswählbar sein

Beitrag von Eric.E »

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 )
Qt::TabFocus 0x1 the widget accepts focus by tabbing.
Qt::NoFocus 0 the widget does not accept focus. <- Was du brauchst
rubikon
Beiträge: 89
Registriert: 27. Mai 2010 13:23

Re: QSpinBox: Text soll nicht auswählbar sein

Beitrag von rubikon »

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:

Code: Alles auswählen

QLineEdit *lineEdit = ui->spinBox->findChild<QLineEdit *>("qt_spinbox_lineedit");
lineEdit->setFocusPolicy(Qt::NoFocus);
lineEdit->setReadOnly(true);
Leider auch ohne Erfolg :(
pfid
Beiträge: 535
Registriert: 22. Februar 2008 16:59

Re: QSpinBox: Text soll nicht auswählbar sein

Beitrag von pfid »

setEnabled(false) ... ?
rubikon
Beiträge: 89
Registriert: 27. Mai 2010 13:23

Re: QSpinBox: Text soll nicht auswählbar sein

Beitrag von rubikon »

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:

Code: Alles auswählen

	if(object == ui->spinBox->findChild<QLineEdit *>("qt_spinbox_lineedit"))
		ui->spinBox->findChild<QLineEdit *>("qt_spinbox_lineedit")->setSelection(0,0);
Antworten