本程序代码为界面UI应用程序:参考 :
http://devbean.blog.51cto.com/448512/232314/
http://devbean.blog.51cto.com/448512/232314/
http://cool.worm.blog.163.com/blog/static/6433900620084632410879/
下面为代码:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QEvent>
//#define ORI_DIS_EVENT QEvent::User+12
namespace Ui {
class MainWindow;
}
class QOriCodeEvent : public QEvent
{
public:
QOriCodeEvent();
public:
QString smyData;
int m_len;
char m_data[255];
};
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
void customEvent( QEvent *event );
bool event(QEvent *event) ;
private slots:
void on_pushButton_clicked();
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
//extern int ORI_DIS_EVENT;
int ORI_DIS_EVENT=0;
//! 来源于 http://cool.worm.blog.163.com/blog/static/6433900620084632410879/
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
ORI_DIS_EVENT = QEvent::registerEventType( );
//int i1 = QEvent::registerEventType( );
//int i2 = QEvent::registerEventType( );
//qDebug()<<"ORI_DIS_EVENT"<<ORI_DIS_EVENT<<i1<<i2;//65535 65534 65533
}
MainWindow::~MainWindow()
{
delete ui;
}
QOriCodeEvent::QOriCodeEvent()
: QEvent( Type(ORI_DIS_EVENT) )
{
//实现比较简单,随机获得指定长度的源码
m_len = rand()%150 + 50;
//0xeb 0x90 表示起始头,其他数据随机产生的。
m_data[0] = 235;
m_data[1] = 144;
for (int i = 2; i < m_len; i++)
m_data[i] = rand()%255;
}
void MainWindow::on_pushButton_clicked()
{
QOriCodeEvent *event = new QOriCodeEvent();
event->smyData="xxxxxxyyyy";
qApp->postEvent(this, event);//! 投递消息 sendEvent QApplication::postEvent(object, new MyEvent(QEvent::registerEventType(2048)));
}
//! customEvent event 这2种方式处理事件都OK
void MainWindow::customEvent(QEvent *event)
{
int type = event->type();
if ( type == ORI_DIS_EVENT )
{
QString sout=((QOriCodeEvent*)event)->smyData;
qDebug()<<sout;
event->accept();
}
}
//! 和上面的处理方式2选1
bool MainWindow::event(QEvent *event)
{
if (event->type() == ORI_DIS_EVENT)
{
QOriCodeEvent *myEvent = static_cast<QOriCodeEvent *>(event);
QString sout=((QOriCodeEvent*)event)->smyData;
qDebug()<<sout;
return true;
}
return QMainWindow::event(event);
}