8

QSpinBox使用向上/向下按钮选择(突出显示)其内容。有什么办法可以禁用它吗?除了使用我自己的子类QSpinBox来访问底层之外,还有什么方法可以清除选择QLineEdit

4

2 回答 2

9

没有办法直接禁用它,但你可以做一些 hack:

void Window::onSpinBoxValueChanged() // slot
{
    spinBox->findChild<QLineEdit*>()->deselect();
}

我建议使用排队连接来连接它,如下所示:

connect(spinBox, SIGNAL(valueChanged(int)), this, SLOT(onSpinBoxValueChanged()), Qt::QueuedConnection);

这将确保在突出显示行编辑后调用插槽。

于 2012-10-15T11:32:59.813 回答
1

与@Anthony 的解决方案相同,但更短:

connect(spinBox, static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged), spinBox,
            [&, spinBox](){spinBox->findChild<QLineEdit*>()->deselect();}, Qt::QueuedConnection);
于 2021-09-20T21:29:33.540 回答