Qt学习--事件/信号

    在编写串口程序的时候,想法实现发送框双击发送数据,可以发现QPlainTextEdit这类既然没有DoubleClick这个信号,后来找了下相关资料,只知道QPlainTextEdit的基类是QWidget,且该类是带有MouseDoubleClickEvent这个事件的,可问题是我想直接就能在我的主程序累里使用该事件,结果试了好多的方式,看了不少的资料都没找到什么可行的方案。
    那没办法,老老实实的在QPlainTextEdit类上派生一个类,并且重载了virtual void     mouseDoubleClickEvent ( QMouseEvent * event )函数,在自定义了一个mouseDoubleClick信号,每当个该事件触发的时候,我就发出一个双击信号,这样功能也就实现了。
 
 1 qsendtextedit.h
 2 
 3 #ifndef QSENDTEXTEDIT_H
 4 #define QSENDTEXTEDIT_H
 5 
 6 #include <QPlainTextEdit>
 7 
 8 class QSendTextEdit : public QPlainTextEdit
 9 {
10     Q_OBJECT
11 public:
12     explicit QSendTextEdit(QWidget *parent = 0);
13     
14 signals:
15     void mouseDoubleClick(void);
16 public slots:
17 
18 protected:
19     virtual void mouseDoubleClickEvent(QMouseEvent *e);
20     
21 };
22 
23 #endif // QSENDTEXTEDIT_H

 

 
 1 qsendtextedit.c
 2 
 3 #include "qsendtextedit.h"
 4 
 5 QSendTextEdit::QSendTextEdit(QWidget *parent) :
 6     QPlainTextEdit(parent)
 7 {
 8 }
 9 
10 void QSendTextEdit::mouseDoubleClickEvent(QMouseEvent *e)
11 {
12     if(e->type() == QEvent::MouseButtonDblClick)
13     {
14         appendPlainText("double click");
15         emit mouseDoubleClick();
16     }
17 
18 }

 

你可能感兴趣的:(qt)