QSpinbox editFInished сигнал при нажатии стрелки вверх / вниз - PullRequest
0 голосов
/ 06 февраля 2020

Я просмотрел множество постов, касающихся редактирования сигналов QSpinBoxFinished и valueChanged, но не смог решить мою проблему, ie,

  1. Я хочу, чтобы сигнал editFinished отправлялся, когда пользователь вводит любое значение и нажимает «Ввод». [DONE]
  2. Пользователь может изменить значение с помощью стрелок вверх / вниз либо с помощью keyPress или mousePress. Это может быть сделано с помощью сигнала valueChange, но не с помощью editFinished

Так что для достижения обоих я сталкиваюсь с проблемой. Предположим, я хочу ввести 10000, поэтому valueChanged испускается с 1, 10, 100, 1000 , 10000 Который я не хочу, скорее он должен выдавать, когда пользователь нажимает ввод после ввода 10000. Так что это делается, избегая valueChanged и подключаясь к & QAbstractSpinbox :: editFinished.

    connect(ui->spinBox, &QSpinBox::editingFinished,
            this, [&]()
    {
        ui->label->setText(QString::number(ui->spinBox->value()));
    });

Но я хочу вверх / стрелки вниз, чтобы работать также. поэтому для этого снова требуется valueChanged.

Есть ли какие-либо средства для достижения этого напрямую, вместо добавления моего собственного класса spinbox и переопределения событий для нажатия / нажатия стрелки вверх / вниз.

Любой предложение приветствуется.

1 Ответ

1 голос
/ 06 февраля 2020

Я думаю, вам нужно убедиться, что свойство keyboardTracking отключено (установлено на false). Свойство по умолчанию true по умолчанию в большинстве случаев.

В качестве состояния документации Qt с keyboardTracking на false вы получите только valueChanged()textChanged() в Qt 5.14+) Сигналы после нажатия Enter вводятся в поле прокрутки (или если пользователь уходит с экрана или поле теряет фокус), а не во время редактирования текста.

...