当前位置:网站首页>QT signals 保存到 QMap
QT signals 保存到 QMap
2022-08-04 05:34:00 【_杜竞宁_】
一般适用较多且统一的不同信号,粗略代码(不能直接运行)如下:
class Person{
public:
Person(){
m_signalMap = {
// 3.初始化时添加到map
{
"eat", &buttonForPerson::eat},
{
"drink", &buttonForPerson::drink},
...
};
}
slots:
void actions(){
any *act = (any)(sender());
if (act)
emit (this->*m_signalMap[act->actionName])();
/* 4.调用,发出信号,可以先判断值是否为空; 我这里不判断,为空代表有某些存在的动作没有被赋值或动作本身就不应该存在,表明代码有问题 */
}
signals:
void eat();
void drink();
...
private:
using p_signal_type = void(Person::*)(); // 1.声明函数指针类型
QMap<QString, p_signal_type> m_signalMap; // 2.声明Map;直接void(Person::*)(),可读性差
};
边栏推荐
猜你喜欢
随机推荐
vim的介绍
0--100的能被3整出的数的集合打乱顺序
[Development Miscellaneous][Editor][Code Reading]ctags & vim
指针的运算【C语言】
网络通信与Socket编程概述
并发概念基础:线程安全与线程间通信
通过socks5代理下载webrtc源码错误:curl: (7) Can't complete SOCKS5 connection xx.xx.xx.xx
MVC custom configuration
Logical Address & Physical Address
Miscellaneous [development] [VS Code] remote - SSD retry failed
Janus转发丢包导致音视频不同步原因分析
【HIT-SC-MEMO3】哈工大2022软件构造 复习笔记3
Uos统信系统 DNS
数据库sql的基础语句
华硕飞行堡垒系列无线网经常显示“无法连接网络” || 一打开游戏就断网
C#找系统文件夹路径
结构体内存对齐-C语言
Scheduler (Long-term,Short-term, Medium-term Scheduler) & Dispatcher
安全漏洞是如何被发现的?
数据库JDBC DAO层方法