Я пишу мини-приложение с помощью Qt 4.7. И у меня есть повторяющаяся проблема с некоторыми QSpinBoxes и QDoubleSpinBoxes. Я устанавливаю сигнал editFinished (), и когда я изменяю значение в любом из этих полей, они посылают два сигнала: когда спинбокс теряет фокус и когда нажимается ввод. Поэтому, когда я нажимаю вкладку или кнопку ввода, моя программа выполняет вычисления дважды. Есть ли какой-нибудь умный и простой способ установить только сигнал lostFocus?
P.S.
Я новичок в Qt. Извините за мой английский, я все еще учусь.
редактирование:
Большое спасибо за помощь netrom!
Но это все еще что-то не так ... Должно ли это выглядеть ниже Я могу скомпилировать его и запустить, но кажется, что SpinBox все еще реагирует на кнопку Enter.
dialog.h:
#ifndef DIALOG_H
#define DIALOG_H
#include <QDialog>
#include <QSpinBox>
#include <QKeyEvent>
namespace Ui {
class SpinBox;
class Dialog;
}
class Dialog : public QDialog
{
Q_OBJECT
public:
explicit Dialog(QWidget *parent = 0);
~Dialog();
private:
Ui::Dialog *ui;
private slots:
void on_spinBox_editingFinished();
};
class SpinBox : public QSpinBox
{
Q_OBJECT
public:
explicit SpinBox(QWidget *parent = 0) : QSpinBox(parent) { }
protected:
void keyPressEvent(QKeyEvent *event) {
switch (event->key()) {
case Qt::Key_Return:
case Qt::Key_Enter:
return;
default: break;
}
QSpinBox::keyPressEvent(event);
}
};
#endif // DIALOG_H