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

用搬瓦工做储存网站南阳建网站企业有哪些

用搬瓦工做储存网站,南阳建网站企业有哪些,樱花jsq30q211,网站建设厃金手指花总十三在QT中最重要也是必须要掌握的机制,就是信号与槽机制,在MFC上也就是类型的机制就是消息与响应函数机制 在QT中我们不仅要学会如何使用信号与槽机制,还要会自定义信号与槽函数,要自定义的原因是系统提供的信号,在一些情…

在QT中最重要也是必须要掌握的机制,就是信号与槽机制,在MFC上也就是类型的机制就是消息与响应函数机制

在QT中我们不仅要学会如何使用信号与槽机制,还要会自定义信号与槽函数,要自定义的原因是系统提供的信号,在一些情况下是不能完全满足我们的需求的所以就需要我们去自定义信号和槽函数,QT为我们很好的屏蔽了信号是如何找到对应槽函数的底层原理,我们只需要注册和发射信号即可

并且信号与槽更方便的地方在于,这两个东西可以不是同一个对话框的,也就是说这个对话框中发出的信号,它的响应可以在别的对话框中

并且信号与槽可以是多对多的,意思就是一个信号可以关联多个槽函数,一个槽函数也可以被多个信号关联

实现

接下来我们就正式介绍自定义信号与槽的方式,以及这里面的一些坑(亲身经历)

需要注意的是,如果要使用信号和槽就需要在类中添加Q_OBJECT没有这个信号和槽是不能用的

自定义信号和槽函数的流程

声明信号

信号的声明,需要在signals属性下面,信号和槽函数都必须是无返回值的,可以带参数

例如我们在AddressInfo对话框类中声明一个地址更新的信号代码

class LocalAddressInfo : public QWidget
{Q_OBJECT
signals: // 信号void UpdateAddr(bool BChanged);
}

声明并实现槽函数

槽函数的声明需要在slots属性下面,槽函数要是无返回值的,可以有形参

例如我们在主对话框中声明并实现地址更新的响应槽函数

class Widget : public QWidget
{Q_OBJECT
private slots: // 槽函数// 用户改变客户端的IP地址信息void UpdateAddr(bool BChanged);
}

注意槽函数是需要实现函数体的

void Widget::UpdateAddr(bool BChanged)
{qDebug() << "接收到了信号 BChanged=" << BChanged;if(BChanged){m_isAddrUpdate = true;// IP地址发生改变m_addr = m_AddrInfo.GetIP();m_port = m_AddrInfo.GetPort();InitSocket();m_isAddrUpdate = false;}m_AddrInfo.hide();
}

将信号和指定槽函数进行关联

信号与槽函数的关联需要用到connect函数

connect函数声明

inline QMetaObject::Connection QObject::connect(const QObject *asender, const char *asignal, const char *amember, Qt::ConnectionType atype);
// asender  信号发送者,所在类的地址
// asignal  发射的信号,该参数可以是信号的地址,也可以是使用SIGNAL()宏指定的信号
// amember  信号响应者槽函数所在的类
// atype    槽函数,该参数可以是槽函数的地址,也可以是使用SLOT()宏指定的槽函数

根据上面我们对connect函数的介绍,信号和槽函数关联的方式有两种

第一种是使用宏来指定信号和槽函数

// 注册信号与槽
connect(&m_AddrInfo, SIGNAL(UpdateAddr(bool)), this, SLOT(UpdateAddr(bool)));

这里需要注意,如果使用宏来定义信号和槽函数就不要在信号和槽函数上面加上作用域了,意思就是不要SIGNAL(LocalAddressInfo::UpdateAddr(bool))这么写!!!如果这么写注册的信号是不好使的

第二种是使用信号和槽函数的地址

// 注册信号与槽
connect(&m_AddrInfo, &LocalAddressInfo::UpdateAddr, this, &Widget::UpdateAddr);

发射信号

发射信号需要使用emit,加上信号,如果信号有参数的话需要带上参数值,如何槽函数的参数有默认参数的话可以不需要带上参数值

例如发射地址信息改变信号

emit UpdateAddr(true);

上面就是整个自定义信号与槽的实现及其使用的讲解

下面我们来扩展一下,信号与槽的一些相关的函数,disconnect()函数用来解除信号与槽的关联、sender()函数用来获取信号的发射者。这里我们就不详细介绍了,大家可以自行了解

到这里QT如何自定义信号和槽就介绍完了

感谢观看学习,大佬们多多指点,愿明天的自己会感谢当下的努力!!!!

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

相关文章:

  • 网银网站建设银行无极网站维护
  • 静安做网站的公司基于iview的网站开发模板
  • 移动网站建设平台美食网站建设毕业设计
  • 如何建设学校网站简述电子商务网站开发的基本流程
  • 购物网站那个信用好又便宜南充外贸网站建设
  • api网站制作装修风格有哪些
  • 模板下载免费网站郑州建设信息网打不开
  • 叫任何一个人一个小时做网站如何做网站的后台
  • 射阳做网站多少钱外贸一般用什么平台
  • 鹤壁北京网站建设天眼查官网查个人
  • 商品网站建设重庆制作网站首页
  • discuz 企业网站 模板广西桂林地图
  • 汽车网站网页模板制作视频网站教程
  • wordpress主题 ftp网站seo优化教程
  • 做兼职做网站的是什么怎么制作网页内容
  • 庆阳做网站的公司wordpress define
  • 广州一流高校建设网站企业app下载安装
  • asp网站源码免费下载校园推广大使的职位描述
  • 家具营销型网站推广app的营销策略
  • 添加网站绑定主机名网站建设与推广是什么意思
  • 源码资源下载站小程序免费制作平台用
  • wordpress粒子特效郑州搜狗关键词优化顾问
  • 珠海做网站哪家最专业湖北建站方案
  • 网站建设技术标准wordpress 后台管理设置
  • 网站用免费空间好不好知名品牌营销策划案例
  • 凡科建站的优势台州网络推广
  • 网站建设开发详细步骤流程中元建设集团股份有限公司网站
  • 有关做美食的网站乐开个网址多少钱
  • 2017两学一做网站wordpress 邀请机制
  • 十堰哪家网站制作公司技术好做男装去哪个网站好