QDoubleSpinBox を再実装しました。を介しmouseDoubleClickEvent
てユーザーが変更できるようにキャッチしたいと思います。singleStep
QInputDialog::getDouble()
私の問題は、再実装するmouseDoubleClickEvent
と、矢印ボタン上で発生するダブルクリックのみをキャッチすることです。実際には、矢印で発生するダブルクリックを無視し、テキスト フィールドで発生するダブル クリックのみをキャッチしたいと考えています。QDoubleSpinBox の子の mouseDoubleClickEvent を再実装する必要があると感じていますが、子イベントを再実装する方法も、正しい子を選択する方法もわかりません コードで子 QRect に制限する私の試みを参照してください: Iどの子を指定する必要があると思いますか...?
ありがとう。
編集:クラス宣言/定義名の不一致を修正しました。
MyQDoubleSpinBox.h
class MyQDoubleSpinBox : public QDoubleSpinBox
{
Q_OBJECT
public:
MyQDoubleSpinBox(QString str, QWidget *parent = 0);
~MyQDoubleSpinBox();
public slots:
void setStepSize(double step);
private:
double stepSize;
QString name;
protected:
void mouseDoubleClickEvent(QMouseEvent *e);
};
MyQDoubleSpinBox.cpp
#include "MyQDoubleSpinBox.h"
MyQDoubleSpinBox::MyQDoubleSpinBox(QString str, QWidget *parent)
: QDoubleSpinBox(parent), stepSize(1.00), name(str)
{
this->setMinimumWidth(150);
this->setSingleStep(stepSize);
this->setMinimum(0.0);
this->setMaximum(100.0);
}
MyQDoubleSpinBox::~MyQDoubleSpinBox()
{
}
void MyQDoubleSpinBox::setStepSize(double step)
{
this->setSingleStep(step);
}
void MyQDoubleSpinBox::mouseDoubleClickEvent(QMouseEvent *e)
{
if( this->childrenRect().contains(e->pos()) )
{
bool ok;
double d = QInputDialog::getDouble(this,
name,
tr("Step Size:"),
this->singleStep(),
0.0,
1000.0,
2,
&ok);
if(ok)
this->setSingleStep(d);
}
}