Qt 4.7を使用してミニアプリケーションを作成しています。私はいくつかのQSpinBoxesとQDoubleSpinBoxesに再発する問題があります。私はeditingFinished()シグナルを設定し、これらのフィールドの値を変更すると、スピンボックスがフォーカスを失ったときとEnterを押したときの2つの信号を送ります。だから私がタブまたはEnterボタンを押すと、私のプログラムは計算を2回行います。 lostFocusシグナルだけを設定するスマートで簡単な方法はありますか?Q(ダブル)スピンボックスから信号をキャプチャする方法
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
実装コードも表示できますか? SpinBoxの使い方を確認する必要があります。 –
あります: void Dialog :: on_spinBox_editingFinished() { } – Neru
スピンボックスがSpinBox(オーバーライドタイプ)のタイプであることは確かですか?私はあなたがUIクリエイターを使用しているので、代わりに通常のQSpinBoxを使用している可能性があるので、動作しません。 –