我正在通过 Qt 4.7 编写一个迷你应用程序。我对一些 QSpinBoxes 和 QDoubleSpinBoxes 有一个反复出现的问题。我设置了 editingFinished() 信号,当我更改任何这些字段中的值时,它们会发送两个信号:旋转框失去焦点时和按下回车时。因此,当我按下选项卡或输入按钮时,我的程序会进行两次计算。是否有任何智能且简单的方法可以仅设置 lostFocus 信号?
PS我是Qt的新手。对不起我的英语,我还在学习。
编辑:
非常感谢您的帮助 netrom!
但是还是有问题……应该像下面这样吗?我可以编译并运行它,但 SpinBox 似乎仍然对 Enter 按钮做出反应。
对话框.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