当前位置: 首页 > news >正文

化妆品网站设计模板如何说服别人做网站

化妆品网站设计模板,如何说服别人做网站,手机网站建设方案doc,怎样登录微信开发者平台【Qt】信号槽的三种连接方式 文章目录 【Qt】信号槽的三种连接方式1. 使用 ui 界面控件2. Qt4 的连接语法3. Qt5 的连接语法 Qt 的信号槽最初来源于函数回调,但注册回调函数有一定局限,安全性也没有保证。所以一定程度上可以说信号槽是对回调机制进行了封…

【Qt】信号槽的三种连接方式

文章目录

  • 【Qt】信号槽的三种连接方式
    • 1. 使用 ui 界面控件
    • 2. Qt4 的连接语法
    • 3. Qt5 的连接语法

Qt 的信号槽最初来源于函数回调,但注册回调函数有一定局限,安全性也没有保证。所以一定程度上可以说信号槽是对回调机制进行了封装。

Qt 的信号槽能够匹配上,必须要满足两个条件

  • 信号的参数个数大于等于槽函数
  • 信号槽的参数个数相同的部分,参数类型必须一一匹配

1. 使用 ui 界面控件

第一种,使用 ui 界面上的控件,通过右键 -> 转到槽,则会在对应界面的 cpp 生成类似以下代码的函数体

void MainWindow::on_pushButton_clicked()
{}

on_WidgetName_SignalName

on + 控件名称 + 信号名称

此种方式生成槽函数,编译时不进行检查,在运行时连接,通过 Qt 自身 moc (meta object compiler) 系统的反射机制来连接两个函数,所以在控件名称修改时,在运行时会提示连接失败。

另一个这种连接方式也不容易维护,连接和解除连接都不在可控范围内。

2. Qt4 的连接语法

第二种方式,使用 Qt4 语法的连接,也就是使用宏扩展, 本质上还是利用字符串的反射机制,示例:

connect(sender, SIGNAL(sigfunc()), receiver, SLOT((slotfunc()));

如果查看 SIGNAL, SLOT 这两个宏的实现,就能发下这两个宏是将函数转换为字符串,但相较第一种方式,此种方式编译阶段做了字符串形式的参数一致性检查。

缺点是无法确认类中是否包含此函数,可以在两个宏中放入两个参数匹配但根本不存在的函数,一样能在编译期间顺利通过编译,却在运行时提示连接失败。

3. Qt5 的连接语法

第三种,Qt5 中提供了函数指针形式的 connect 语法,示例:

connect(sender, &Sender::signal, receiver, &Receiver::slot);

类名加函数取地址,确保了编译器检查信号与槽函数是否匹配,可以减少运行时出现连接失败的情况。

还有一种 lambda 表达式的变体,也是使用函数指针的方式来连接

connect(sender, &Sender::signal, [](){//... implement of slot
});

但 Qt5 语法中如果出现信号或槽函数或两者都有重载的情况下,直接使用会编译报错:

no matching member function for call to 'connect'

可以使用 Qt 的 QOverload 来处理,假如有以下信号和槽函数

signals:void sigfunc(int);void sigfunc(QString);
//...
public slots:void slotfunc(int);void slotfunc(QString);

连接时可以使用如下方式:

connect(sender, QOverload<int>::of(&Sender::sigfunc), receiver, QOverload<int>::of(&Receiver::slotfunc));

connect(sender, QOverload<QString>::of(&Sender::sigfunc), receiver, QOverload<QString>::of(&Receiver::slotfunc));

来分别连接信号和槽函数的重载 (int, QString)

http://www.yayakq.cn/news/122519/

相关文章:

  • 做网站前段用什么软件有没有做面粉美食的网站
  • 如何做一份网站的数据分析做电商网站必需知道qc
  • 做国外有那些网站比较好的弋阳县建设工程网站
  • 深圳专业做网站建设代码级优化wordpress
  • 彭水网站建设建设银行查余额网站
  • 订阅号可以做网站链接吗时尚女装网站模版
  • 2008vps做网站成都计算机培训机构排名前十
  • 微金所网站谁做的系统开发平台
  • 在线网站搭建系统如何做自己的网站后台
  • 网站的数据库丢失wordpress网盘搜索
  • 誉字号网站用自己的电脑建设网站
  • 网站后台无法上传照片3网合一网站
  • 2008建立的php网站慢网站对联模板
  • 收费的网站如何免费洛阳app制作公司
  • 宁波免费建站外包公司长沙景点门票价格表
  • 网站特色分析图怎么做外链发布的平台最好是
  • 在哪找人做网站十大免费游戏网站
  • 网站建设费用的会计英文网站建设600
  • 网站建设阐述装饰网站建设效果图
  • 有哪些做农产品的网站自已建个人网站
  • 做的网站需要什么技术支持dede网站模板怎么安装
  • 建筑公司网站石家庄人力资源六大模块
  • 做网站企业经营范围高度重视网站建设 利用网站 接受监督
  • 无锡做装修网站全网普盖网站建设河南
  • 广州网站设计联系方式网站开发人员是干嘛的
  • 佛山企业网站开发公司长兴县网站建设
  • 快速建设网站服务网站开发怎么让别人看到
  • 网站开发后台技术做门户网站的思路
  • php网站在线打包源码自适应网站三套代码
  • 办公室装修效果图简约大气搜狗推广优化