当前位置:网站首页>QT自定义事件
QT自定义事件
2022-08-06 06:48:00 【God港】
前言
自定义事件主要用于用户实现自己所需要的变化
1.自定义事件的定义
自定义事件从user:1000 max:MaxUser(65535),本例子我们简单更改界面颜色
#pragma once
#include <QEvent>
#include<QColor>
const int CustomEventBaseID = QEvent::User;
const int ChangeNumberEventID = CustomEventBaseID + 1;
class ChangeColorEvent : public QEvent
{
public:
ChangeColorEvent(QObject *parent, QColor clr);
~ChangeColorEvent();
QColor clr;
};
#include "ChangeColorEvent.h"
ChangeColorEvent::ChangeColorEvent(QObject *parent, QColor clr)
: QEvent(QEvent::Type(ChangeNumberEventID))
{
this->clr = clr;
}
ChangeColorEvent::~ChangeColorEvent()
{
}
2.自定义事件的调用
主要有sendevent和popevent两种方式,本文采用sendevent。
#pragma once
#include <QtWidgets/QMainWindow>
#include "ui_QtWidgetsApplication5.h"
#include"ChangeColorEvent.h"
#include<QTimer>
class QtWidgetsApplication5 : public QMainWindow
{
Q_OBJECT
public:
QtWidgetsApplication5(QWidget *parent = Q_NULLPTR);
protected:
void customEvent(QEvent *event);
private slots:
void randdomData();//随机颜色
private:
Ui::QtWidgetsApplication5Class ui;
QColor clr;
QApplication* m_pApp = nullptr;
QTimer *timer;//定时刷新
};
#include "QtWidgetsApplication5.h"
#include"qthread.h"
#include<QDebug>
QtWidgetsApplication5::QtWidgetsApplication5(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(randdomData()));
timer->start(100);
randdomData();
}
void QtWidgetsApplication5::customEvent(QEvent * event)
{
ChangeColorEvent* e = dynamic_cast<ChangeColorEvent*>(event);
if (e)
{
QPalette pal(this->palette());
qDebug() << e->clr;
pal.setColor(QPalette::Background, e->clr);
this->setAutoFillBackground(true);
this->setPalette(pal);
this->show();
}
}
void QtWidgetsApplication5::randdomData()
{
QColor clr2(rand() % 256, rand() % 256, rand() % 256);
if (clr != clr2)
{
clr = clr2;
ChangeColorEvent e(this, clr);//构造函数传参
m_pApp->sendEvent(this, &e);
}
}
3.效果

边栏推荐
猜你喜欢
随机推荐
CobaltStrike图片远程上线(实验篇)
推荐系统-排序层-2018:xDeepFM模型【xDeepFM是对DCN(Deep&Cross)的改进,不是对DeepFM的改进】【中科大】
CrossOver22试用期到了如何免费使用?
SAP ABAP 通过BAPI 创建生产订单/删除生产订单组件/添加生产订单组件/释放生产订单
D. Corrupted Array
C. Rings---Codeforces Round #741 (Div. 2)
Cesium从已知的自定义材质扩展其他效果(二)
高等数学(第七版)同济大学 习题4-2(后半部分) 个人解答
翻译软件排行榜-免费翻译软件排行榜-翻译软件推荐排行榜
2022 第四周全球 AI 模型周报
断网情况下,华为init接口持续调用,导致手机耗电严重
入职阿里巴巴,成为年薪百万阿里P7高级架构师需要必备哪些技术栈,带你来观望一下
【Harmony OS】【FAQ】鸿蒙问题合集2
数据集ilpd印度肝病数据数据分析
接口自动化测试
redis 规范命名 批量删除key
自用工具 猴子都会用的UNITY文件浏览器(浏览文件夹)
成员变量与局部变量区别
明日立秋 autumn begins,天气渐凉
翻译文章的软件









