8

QSpinBox上/下ボタンを使用すると、その内容が選択(強調表示)されます。これを無効にする方法はありますか?QSpinBox基になるにアクセスするために自分のサブクラスを使用する以外に、選択をクリアする方法はありますQLineEditか?

4

2 に答える 2

9

直接無効にする方法はありませんが、少しハックすることはできます。

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 に答える