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

企业营销网站建设费用潍坊网站制作在线

企业营销网站建设费用,潍坊网站制作在线,专业网站建设网站开发公司,铜山区建设局局网站周保春信号槽中的函数重载 QT4的方式QT5的方式函数指针重载函数QT5信号函数重载解决方案 总结 QT4的方式 Qt4中声明槽函数必须要使用 slots 关键字, 不能省略。 信号函数: 槽函数: mainwondow: cpp文件: #include "mainwindow.h"…

信号槽中的函数重载

  • QT4的方式
  • QT5的方式
    • 函数指针重载函数
    • QT5信号函数重载
      • 解决方案
  • 总结

QT4的方式

Qt4中声明槽函数必须要使用 slots 关键字, 不能省略。

信号函数:
在这里插入图片描述
槽函数:
在这里插入图片描述
在这里插入图片描述
mainwondow:
在这里插入图片描述
在这里插入图片描述
cpp文件:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "QDebug"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);tom = new me(this);teacher = new myteacher(this);//connect(ui->pushButtonqt4,&QPushButton::clicked,this,&MainWindow::sendMsg);//qt4的连接方式connect(ui->pushButtonqt4,SIGNAL(clicked()),this,SLOT(sendMsg()) );connect(tom,SIGNAL(sendMsg()),teacher,SLOT(receiveMsg()));connect(tom,SIGNAL(sendMsg(QString )),teacher,SLOT(receiveMsg(QString )));//qt5的连接方式}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::sendMsg()
{qDebug()<<"调用一次";//tom->sendMsg();QString s =" hello";tom->sendMsg(s);
}

调用有参的信号函数:
在这里插入图片描述
调用无参的信号函数:

在这里插入图片描述

在这里插入图片描述

QT5的方式

函数指针重载函数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

QT5信号函数重载

信号函数和槽函数和之前QT4中是一样的。
信号函数;
在这里插入图片描述
槽函数:
在这里插入图片描述
在这里插入图片描述
关联方式:
在这里插入图片描述

报错如下:E:\Code\Qt\mySignalAndSlot3\mainwindow.cpp:20: error: no matching function for call to 'MainWindow::connect(me*&, <unresolved overloaded function type>, myteacher*&, <unresolved overloaded function type>)' connect(tom,&me::sendMsg,teacher,&myteacher::receiveMsg); ^

信号和槽都是通过函数名去关联函数的地址, 但是这个同名函数对应两块不同的地址, 一个带参, 一个不带参, 因此编译器就不知道去关联哪块地址了, 所以如果我们在这种时候通过以上方式进行信号槽连接, 编译器就会报错。

解决方案

可以通过定义函数指针的方式指定出函数的具体参数,这样就可以确定函数的具体地址了。
定义函数指针指向重载的某个信号或者槽函数,在connect()函数中将函数指针名字作为实参就可以了。

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "QDebug"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);tom = new me(this);teacher = new myteacher(this);//connect(ui->pushButtonqt4,&QPushButton::clicked,this,&MainWindow::sendMsg);//qt4的连接方式
//    connect(ui->pushButtonqt4,SIGNAL(clicked()),this,SLOT(sendMsg()) );
//    connect(tom,SIGNAL(sendMsg()),teacher,SLOT(receiveMsg()));
//    connect(tom,SIGNAL(sendMsg(QString )),teacher,SLOT(receiveMsg(QString )));//qt5的连接方式//函数指针void (me::*sendMsg1)() ;void (me::*sendMsg2)(QString s);void (myteacher::*receiveMsg1)();void (myteacher::*receiveMsg2)(QString s);sendMsg1 = &me::sendMsg;sendMsg2 = &me::sendMsg;receiveMsg1 = &myteacher::receiveMsg;receiveMsg2 = &myteacher::receiveMsg;connect(ui->pushButtonqt4,&QPushButton::clicked,this,&MainWindow::sendMsg);//connect(tom,&me::sendMsg,teacher,&myteacher::receiveMsg);//connect(tom,&me::sendMsg,teacher,&myteacher::receiveMsg);connect(tom,sendMsg1,teacher,receiveMsg1);connect(tom,sendMsg2,teacher,receiveMsg2);}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::sendMsg()
{qDebug()<<"调用一次";tom->sendMsg();QString s =" hello";tom->sendMsg(s);
}

在这里插入图片描述

总结

  1. Qt4的信号槽连接方式因为使用了宏函数, 宏函数对用户传递的信号槽不会做错误检测, 容易出bug
  2. Qt5的信号槽连接方式, 传递的是信号槽函数的地址, 编译器会做错误检测, 减少了bug的产生
  3. 当信号槽函数被重载之后, Qt4的信号槽连接方式不受影响
  4. 当信号槽函数被重载之后, Qt5中需要给被重载的信号或者槽定义函数指针
http://www.yayakq.cn/news/11764/

相关文章:

  • 北京城乡住房建设官方网站上海外贸网站优化
  • 运城哪里做网站世界杯韩国出线了吗
  • 西宁手机网站建设12355能找回智慧团建密码吗
  • 怎样在微信里做网站网站营销网站优化
  • 政务网站建设合同佛山做网站推广
  • 桥头做网站网络平台建设公司排名
  • 制作网站的步骤和过程如何查看自己的企业邮箱
  • 泉州制作网站软件中安消防安全网站建设
  • 化妆品网站建设方案项目书用织梦做网站调用乱码
  • 做康复医院网站网页翻译用不了
  • 专做健身餐的网站京东网上购物商城购物
  • 网站建设规模设想网站规划与设计范文
  • 网站建设尢金手指专业公司网站建设如何做账
  • wordpress文章行距很大谷歌优化技巧
  • 网上购物网站广告设计公司名字大全
  • 网站过度优化首页被k承德网站制作的流程
  • 申请免费个人网站和域名携程网站建设
  • 做网站的岗位叫什么广东省建设交易中心网站首页
  • 广州 网站建设网络推广网页设计支持ipv6网站开发
  • 英文seo如何优化网站seo优化管理系统
  • 海口建站模板厂家青岛seo用户体验
  • 网站代运营合同模板广东省发布最新消息
  • 上海网站开发与信息系统开发方案
  • 班级管理网站开发营销型网站网站设计
  • 都匀网站制作做服装要看国外哪些网站好
  • php网站开发实例教程 传智播客中国建设银行网站江苏分行
  • 手机功能网站案例运用photoshop设计网站首页
  • 宝塔做网站可以用什么端口外贸网站建站赚钱
  • 网站建设服务网站网站空间空间租赁
  • 可以免费打广告的网站wordpress文章打赏