zoukankan      html  css  js  c++  java
  • 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 }
  • 相关阅读:
    【强烈推荐】 超漂亮的仿腾讯弹出层效果(兼容主流浏览器<转>;
    必须掌握的八个【cmd 命令行】
    grep命令的用法
    sed 命令的用法1
    Paste命令的用法
    uniq命令的用法
    join命令的用法
    Sort命令的用法
    cut命令的用法
    tr命令学习
  • 原文地址:https://www.cnblogs.com/nixianmin/p/3104869.html
Copyright © 2011-2022 走看看