您的位置:首页 > 编程语言 > Qt开发

Qt学习--事件/信号

2013-05-28 22:55 295 查看
在编写串口程序的时候,想法实现发送框双击发送数据,可以发现QPlainTextEdit这类既然没有DoubleClick这个信号,后来找了下相关资料,只知道QPlainTextEdit的基类是QWidget,且该类是带有MouseDoubleClickEvent这个事件的,可问题是我想直接就能在我的主程序累里使用该事件,结果试了好多的方式,看了不少的资料都没找到什么可行的方案。
那没办法,老老实实的在QPlainTextEdit类上派生一个类,并且重载了virtual void mouseDoubleClickEvent ( QMouseEvent * event )函数,在自定义了一个mouseDoubleClick信号,每当个该事件触发的时候,我就发出一个双击信号,这样功能也就实现了。

qsendtextedit.h

#ifndef QSENDTEXTEDIT_H
#define QSENDTEXTEDIT_H

#include <QPlainTextEdit>

class QSendTextEdit : public QPlainTextEdit
{
Q_OBJECT
public:
explicit QSendTextEdit(QWidget *parent = 0);

signals:
void mouseDoubleClick(void);
public slots:

protected:
virtual void mouseDoubleClickEvent(QMouseEvent *e);

};

#endif // QSENDTEXTEDIT_H


qsendtextedit.c

#include "qsendtextedit.h"

QSendTextEdit::QSendTextEdit(QWidget *parent) :
QPlainTextEdit(parent)
{
}

void QSendTextEdit::mouseDoubleClickEvent(QMouseEvent *e)
{
if(e->type() == QEvent::MouseButtonDblClick)
{
appendPlainText("double click");
emit mouseDoubleClick();
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: