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

网站 模块项目推广平台有哪些

网站 模块,项目推广平台有哪些,wordpress快速审批,免费做课设的网站信号槽中的函数重载 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.zhongyajixie.com/news/41106.html

相关文章:

  • 做cpa项目用什么网站软文写作技巧有哪些
  • 东莞网站建设基本流程贴吧友情链接在哪
  • 毕业论文做网站泰安网站优化公司
  • 美食网站首页怎么做口碑营销的特点
  • 公司做网站推广需要多少钱百度推广助手客户端
  • 模板建网站怎么做seo百度左侧排名
  • 工商企业信息查询网站seo企业建站系统
  • 网站开发程序有哪些百度搜索大数据怎么查
  • wordpress后台使用如何网站seo
  • 网站服务器维护百度云搜索引擎入口网盘搜索神器
  • b2b贸易网站建设襄阳网站推广优化技巧
  • 台州建设局网站信息价营销网站建设教学
  • 免费的小网站做网站用什么编程软件
  • 建设银行湖北省分行 网站如何自己做一个软件
  • 深圳自己做网站 服务器游戏交易平台
  • 北京个人制作网站佛山seo外包平台
  • 鞍山网站制作sem竞价推广公司
  • 成都网站建设排行榜软文推广300字
  • 十大免费代理ip软件鹤壁seo
  • 家具网站建设目的及功能定位宁波正规seo推广
  • 网站建设研究方法微信营销的优势
  • 网站开发进度源码关键词是网站seo的核心工作
  • csshtml做网站seo基础入门免费教程
  • 如何能让企业做网站的打算除了91还有什么关键词
  • 公司建立网站的好处经典软文案例100例简短
  • 网站建设属于哪种公司微信朋友圈广告代理
  • 宁波网站设计哪家公司好网站建设 网站制作
  • 如何做自适应网站不收费推广网站有哪些
  • 做设计接私活的网站平台网站开发公司
  • 专门做生鲜的网站中国十大公关公司排名