`

Qt自定义事件

    博客分类:
  • Qt
 
阅读更多
先看下官方的文档:(google translation)
QCoreApplication::postEvent:添加事件的事件,作为事件接收对象,接收器,一个事件队列并立即返回。事件必须在堆上分配的,因为后事件队列将事件的所有权和删除已发布一次。它是不是安全的访问后,它已发布的事件。当控制权返回到主事件循环,使用notify()函数,存储在队列中的所有事件将被发送。事件是在发布的顺序处理。对于更多的处理顺序控制,使用postEvent()重载下面的,这需要一个优先级参数。此功能的所有文章与一个Qt事件:NormalEventPriority。
QCoreApplication::sendEvent :直接发送事件的事件接收器接收,使用notify()函数。返回的是从事件处理程序返回的值。已发送事件时,该事件不会被删除。正常的做法是在栈上创建的事件

总结:
postEvent:由Qt或应用程序产生,放入消息队列,其event 必须分配在 heep 上。用完后会被Qt自动删除

sendEvent:由Qt或应用程序产生,不放入队列,直接被派发和处理,其event 必须分配在 stack 上。

重绘事件处理函数 paintEvent(), 当我们调用 update() 时,产生的是 Posted 事件,当我们调用 repaint() 时,产生的是 Sent 事件

customevent.h
#ifndef CUSTOMEVENT_H
#define CUSTOMEVENT_H

#include <QtGui/QWidget>
#include <QtCore/QEvent>
#include "ui_customevent.h"


enum MyEvent{
	TESTEVENT1 = QEvent::User,
	TESTEVENT2
};

class customEvent : public QWidget
{
	Q_OBJECT

public:
	customEvent(QWidget *parent = 0, Qt::WFlags flags = 0);
	~customEvent();

private:
	Ui::customEventClass ui;
};

#endif // CUSTOMEVENT_H



customevent.cpp
#include "customevent.h"
#include "getEvent.h"

customEvent::customEvent(QWidget *parent, Qt::WFlags flags)
	: QWidget(parent, flags)
{
	ui.setupUi(this);
	QEvent *event1 = new QEvent(static_cast<QEvent::Type>(TESTEVENT1));
	QEvent *event2 = new QEvent(static_cast<QEvent::Type>(TESTEVENT2));
	getEvent *get = new getEvent;
	QApplication::postEvent(get,event1);
	QApplication::sendEvent(get,event2);
}

customEvent::~customEvent()
{

}



getEvent.h
#ifdef GETEVENT_H
#endif GETEVENT_H

#include <QObject>
#include <QEvent>
#include <QDebug>
#include "customevent.h"

class customEvent;
class getEvent:public QObject{
public:
	getEvent(){}
	~getEvent(){}
	bool event(QEvent *e){
		switch (e->type())
		{
		case TESTEVENT1:
			qDebug() << "get the test event1";
			break;
		case TESTEVENT2:
			qDebug() << "get the test event2";
			break;
		default:
			break;
		}
		return true;
	}
};


get the test event2
get the test event1
分享到:
评论

相关推荐

    Qt自定义事件,Qt线程应用

    **Qt自定义事件** 在Qt中,事件是通过`QEvent`类及其子类进行管理的。当一个事件发生时,Qt会将该事件放入一个事件队列,然后由事件循环(event loop)分发到相应的对象进行处理。要创建自定义事件,你需要: 1. ...

    Qt 自定义事件

    下面我们将深入探讨Qt自定义事件的实现及其在跨线程通信中的应用。 首先,要创建一个自定义事件,你需要继承QEvent类。QEvent是Qt事件系统的基石,包含了事件类型和数据成员。例如,你可以这样创建一个名为`...

    qt自定义事件

    Qt自定义事件允许开发者扩展默认的事件系统,以便更好地满足特定应用的需求。本文将深入探讨Qt自定义事件的概念、创建方法以及如何在应用程序中使用它们。 首先,让我们了解Qt中的基本事件流程。当一个事件发生时,...

    Qt自定义事件Demo

    在Qt中,你可以创建自定义事件类型,以便在应用程序中传递自定义的信息。为了实现自定义事件,你需要继承自`QEvent`类,并定义你自己的事件类型。然后,你可以在需要的时候创建自定义事件对象,并将它们发送给事件...

    QT自定义窗口 自由拖动 自定义标题

    在QT编程中,自定义窗口是一项常见的需求,它允许开发者根据应用的需求来设计独特的界面元素和交互方式。本文将深入探讨如何在QT...同时,理解QT的事件处理机制和窗口系统原理,对于实现复杂功能和自定义行为至关重要。

    Qt 自定义 Calendar 日历控件

    在本场景中,我们关注的是“Qt自定义Calendar日历控件”。这涉及到使用Qt库中的QCalendarWidget或者完全从头构建一个自定义的日历组件。通过自定义,我们可以更好地控制日历的显示、交互和样式,以适应应用程序的...

    Qt自定义按钮弹窗控件。

    "Qt自定义按钮弹窗控件"指的是通过Qt的类库和信号与槽机制,设计一个具有特定功能的按钮,当用户点击该按钮时,会弹出一个具有自定义样式的窗口。这个窗口可能包含圆角和阴影效果,以提供更美观、友好的视觉体验。...

    QT 自定义提示框 MessageBox

    QT 自定义提示框 Qt 自定义提示框 类似QMessageBox https://blog.csdn.net/qq_37373742/article/details/127402276?spm=1001.2014.3001.5502 为什么需要设计自定义提示框呢? 1.Qt自带的提示框样式单一; 2.提示框...

    Qt自定义控件库.rar

    Qt自定义控件库是一个集合了多种自定义控件资源的压缩包,主要针对Qt开发平台,用于丰富和扩展Qt应用程序的用户界面。Qt是一个跨平台的C++图形用户界面应用程序开发框架,广泛应用于桌面、移动设备以及嵌入式系统的...

    QT自定义界面生成器

    QT自定义界面生成器是一款专为Qt开发人员设计的实用工具,它简化了创建和定制用户界面的过程。这款软件提供了一种直观的方式,使开发者能够快速构建和个性化七种预设的界面模板,同时允许在这些基础上进行进一步的...

    QT自定义dialog提示窗

    本项目“QT自定义dialog提示窗”着重于通过纯代码方式创建对话框,无需使用UI文件。下面将详细阐述相关知识点。 1. **自定义对话框的创建**: 在QT中,可以继承`QDialog`类来创建自定义对话框。`QDialog`是QT中的...

    Qt自定义messageBox弹窗代码

    Qt自定义messageBox弹窗代码

    Qt 自定义导航栏

    总之,Qt自定义导航栏是提升应用用户体验的重要手段。通过合理地使用Qt提供的类和方法,我们可以创建出既美观又实用的导航结构。提供的源代码和示例是一个很好的学习资源,可以帮助开发者快速掌握自定义导航栏的实现...

    qt自定义控件(开源)

    #ColorProgressBar 多彩进度条 编译环境: Qt5.x + mingw-QtCreater 运行截图: progressbarcolor为原版代码 #DynamicProgressBar 多态进度条 编译环境: Qt5.x + mingw-QtCreater 运行截图: #RoundProgressBar 编译...

    Qt自定义鼠标点击样式

    Qt自定义鼠标点击样式。具体详情可看:https://blog.csdn.net/automoblie0/article/details/102981764

    Qt自定义控件

    "Qt自定义控件"是Qt库的一个重要特性,允许开发者根据项目需求创建自己的图形用户界面元素,以实现更独特、更符合设计风格的交互体验。以下是对`Qt自定义控件`这一主题的详细讲解。 首先,理解Qt控件(Widgets)的...

    QT 自定义控件编译与使用

    1. **QT自定义控件概述**: QT自定义控件允许开发者创建具有独特外观和行为的界面元素。这些控件可以是继承自现有QT控件(如QPushButton、QLabel等)的类,也可以是完全独立的组件。通过自定义控件,开发者能够实现...

    QT自定义控件-饼状图(含源码和demo)

    QT自定义控件是开发GUI应用时经常遇到的需求,它允许开发者根据特定需求创建具有独特功能和视觉表现的界面元素。本资源提供了一个基于QT框架的自定义饼状图控件,该控件实现了类似Echarts的数据可视化效果,能够帮助...

    QT 自定义进度条实例

    QT自定义进度条实例是一个基于QT框架的编程项目,旨在展示如何通过自定义样式和功能来创建美观且实用的进度条组件。QT是一个跨平台的C++图形用户界面应用程序开发框架,广泛应用于桌面、移动以及嵌入式系统。在本...

Global site tag (gtag.js) - Google Analytics