当前位置:网站首页>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::*)(),可读性差
};
边栏推荐
猜你喜欢
随机推荐
Prematurely reached end of stream
SSO单点登陆
LeetCode刷题
并发概念基础:并发、同步、阻塞
JUC锁框架——初识AQS
华为鲲鹏arm服务器下使用webrtc和boost踩坑记--编译篇
2020-03-27
解决腾讯云DescribeInstances api查询20条记录以上的问题
安全漏洞是如何被发现的?
基于Webrtc和Janus的多人视频会议系统开发6 - 从Janus服务器订阅媒体流
无一技之长学什么可以做到月入上万?
Memory Management
杰哥带大家做一次meterpreter内网渗透模拟
Uos统信系统 SSH
CMDB 阿里云部分实现
基于Webrtc和Janus的多人视频会议系统开发7 - publish和subscribe声音设备冲突导致对方听不到声音
线程池原理
基于Event Stream操作JSON
如何在Excel 里倒序排列表格数据 || csv表格倒序排列数据
跑跑飞弹室外跑步AR游戏代码方案设计