简述
通过QSpinBox或者QDoubleSpinBox安装事件过滤器去获取鼠标双击事件,但是不管怎么样就是不响应,或许是由于它是一个组合控件导致的。通过尝试给QLineEdit安装事件过滤器,可以捕获鼠标双击事件,正恰好QSpinBox或者QDoubleSpinBox有个接口lineEdit(),但是它是保护的不能使用,两种方式如下所示:
修改源代码
通过修改源代码把lineEdit()修饰的protected改为public就可以使用(仅限于Linux),找到源代码qabstractspinbox.h,把:
protected:
void resizeEvent(QResizeEvent *event);
void keyPressEvent(QKeyEvent *event);
void keyReleaseEvent(QKeyEvent *event);
#ifndef QT_NO_WHEELEVENT
void wheelEvent(QWheelEvent *event);
#endif
void focusInEvent(QFocusEvent *event);
void focusOutEvent(QFocusEvent *event);
void contextMenuEvent(QContextMenuEvent *event);
void changeEven