qtqt4qspinbox

How to prevent QSpinBox from automatically highlighting contents


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?


Solution

  • 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.