Qt的控件有时候并不提供我们想要的信号
已QLineEdit为例,它并没有提供鼠标点击的信号,此时就需要我们自己添加
方法如下:
mylineedit.h
- #ifndef MYLINEEDIT_H
- #define MYLINEEDIT_H
- #include <QLineEdit>
- #include <QMouseEvent>
- class MyLineEdit : public QLineEdit
- {
- Q_OBJECT
- public:
- explicit MyLineEdit(QWidget *parent = 0);
- protected:
- virtual void mousePressEvent(QMouseEvent *event);
- signals:
- void LineEditClicked();
- public slots:
- };
- #endif // MYLINEEDIT_H
mylineedit.cpp
- #include "mylineedit.h"
- MyLineEdit::MyLineEdit(QWidget *parent) :
- QLineEdit(parent)
- {
- }
- void MyLineEdit::mousePressEvent(QMouseEvent *event)
- {
- if (event->button() == Qt::LeftButton)
- {
- emit LineEditClicked();
- }
- QLineEdit::mousePressEvent(event);
- }
这时MyLineEdit就是一个已经有了鼠标点击信号的QLineEdit,我们只需要向其他信号一样使用它就可以了