QSpinBox
makes its contents selected (highlighted) upon using up/down buttons. Is there any way to disable this?
Is there any way to clear selection, other than use my own subclass of QSpinBox
to access the underlying QLineEdit
?
How to prevent QSpinBox from automatically highlighting contents
There's no way to directly disable it, but you can do a bit of a hack:
void Window::onSpinBoxValueChanged() // slot
{
spinBox->findChild<QLineEdit*>()->deselect();
}
I recommend connecting to this using a queued connection, like this:
connect(spinBox, SIGNAL(valueChanged(int)), this, SLOT(onSpinBoxValueChanged()), Qt::QueuedConnection);
This will ensure that the slot is called after the line edit is highlighted.
Same solution as @Anthony's, but shorter:
connect(spinBox, static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged), spinBox,
[&, spinBox](){spinBox->findChild<QLineEdit*>()->deselect();}, Qt::QueuedConnection);
© 2022 - 2024 — McMap. All rights reserved.