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

南昌专业做网站公司建网站用什么软件

南昌专业做网站公司,建网站用什么软件,平台搭建阳光房是否违章建筑,wordpress 导出插件目录 概述 Q_OBJECT 自定义信号 自定义槽 带参数的信号和槽 信号与槽断开 定义槽函数时,使用lambda表达式 概述 所谓的信号槽,要解决的问题,就是响应用户的操作,这是QT与其他GUI开发框架比较不同的地方。其他的GUI开发框…

目录

概述

Q_OBJECT 

自定义信号

自定义槽

带参数的信号和槽

信号与槽断开

定义槽函数时,使用lambda表达式


概述

所谓的信号槽,要解决的问题,就是响应用户的操作,这是QT与其他GUI开发框架比较不同的地方。其他的GUI开发框架,搞的方式都要更简洁一些,例如网页开发中响应用户操作,主要就是挂回调函数,不需要搞一个单独的connect完成上述的信号槽连接。

Qt信号槽的connect这个机制,主要目的是有:

  • 解耦合,把触发用户操作的控件 和 处理对应用户的操作逻辑 解耦合
  • ”多对多“ 效果,一个信号,可以connect到多个槽函数上,一个槽函数,也可以被多个信号connect

这里的多对多,可以与mysql中的多对多结合理解

一个学生,可以选择多门课程来学习

一门课程,可以被多个同学来选择


一个信号,可以connect到多个槽函数上

一个槽函数,可以被多个信号connnect

 可以说 Qt引入信号槽的机制,最本质的目的就是为了能够让信号和槽之间按照“多对多”的方式来进行关联。其他的GUI框架往往也不具备这样的特性。但是在实际开发中很少用到,绝大部分情况下,一对一就够用了

Q_OBJECT 

 Qt中如果要让某个类能够使用信号槽(可以在类中定义信号和槽函数)则必须要在类最开始的地方,写下Q_OBJECT宏

自定义信号

Qt中也允许自定义信号,自定义信号比较少见,实际开发中很少需要自定义信号,信号对应到用户的某个操作,在GUI,用户能够进行哪些操作,是可以穷举的,Qt内置的信号,基本上已经覆盖到了上述所有可能的用户操作。

  1. 信号是一类非常特殊的函数,程序员只要写出函数声明,并且告诉Qt,这是一个”信号即可“,这个函数的定义,是Qt在编译过程中,自动生成的,程序员无法干预。
  2. 信号在Qt中是特殊的机制,Qt生成的信号函数的实现,要配合Qt框架做很多既定的操作。
  3. 作为信号函数,这个函数的返回值,必须是void,有没有参数都可以,甚至也可以支持重载

代码实例:

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();
signals:void mySignal();
public:void handleMySignal();
private:Ui::Widget *ui;
};
#endif // WIDGET_H
#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//这里只是建立链接,并未发出信号connect(this,&Widget::mySignal,this,&Widget::handleMySignal);//发出自定义的信号emit mySignal();
}Widget::~Widget()
{delete ui;
}void Widget::handleMySignal()
{this->setWindowTitle("123");
}

自定义槽

自定义槽函数是非常关键的,开发中大部分情况都是需要自定义槽函数的,槽函数就是用户触发某个操作后,要进行的业务逻辑

所谓的slot就是一个普通的成员函数,自定义一个槽函数,操作过程和自定义一个普通的成员函数一样。

另一种自定义槽函数的方式是 在图形化界面中右键 转到槽

随后跳转的窗口就是 QPushButton给我们提供的所有的信号(还包含了QPushButton 父类的信号)

在Qt中,除了通过connect来连接信号槽之外,还可以通过函数名字的方式来自动连接

如果我们通过图形化界面创建控件,还是推荐使用这种快速的方式来连接信号槽

如果我们是通过代码的方式来创建控件,还是得手动connect(因为我们的代码中没有调用connectSlotByName)

带参数的信号和槽

当信号带有参数的时候,槽的参数必须和信号的参数一致,此时发射信号的时候,就可以给信号函数传递实参,与之对应的这个参数就会传递到对应的槽函数中。

这里的参数一致主要是要求类型,个数如果不一致也可以,不一致的时候,要求信号的参数的个数必须要比槽的参数个数要更多。

如果我们严格要求参数个数一致,就意味着信号绑定到槽的要求就变高了,换而言之,当下这样的规则就允许信号和槽之间绑定更灵活了,更多的信号可以绑定到这个槽函数上了

信号与槽断开

使用 disconnect 来断开信号槽的连接,disconnect使用的方式和connect是非常类似的。 

disconnect用的比较少,大部分的情况下,把信号和槽连上之后,就不必管了,主动断开往往是把信号重新绑定到另一个槽函数上。

定义槽函数时,使用lambda表达式

代码示例:

    QPushButton* button = new QPushButton(this);button->setText("按钮");button->move(200,200);connect(button,&QPushButton::clicked,this,[](){qDebug()<<"lambda被执行了";})

 lambda表达式是一个回调函数,这个函数是无法直接获取到上层作用域中的变量,lambda为了解决这个问题,引入了“变量捕获”语法,通过变量捕获,获取到外层作用域中的变量

 connect(button,&QPushButton::clicked,this,[button,this](){qDebug()<<"lambda被执行了";button->move(300,300);this->move(100,100);});

如果 当前lambda里面想使用更多的外层变量,我们可以写作 [=] ,这个写法的含义就是把上层作用域中的所有变量名都给捕获进来。

lambda除了可以按照 值的方式来捕获变量 [=] 还可以按照引用的方式来捕获 [&](Qt中很少这么写)捕获到的变量一般就是各种控件的指针,指针变量按照值传递或者引用来传递,都无所谓。

需要注意的是 lambda语法是C++11中引入的,对于Qt 5及其更高版本,默认就是按照C++ 11来编译的,如果使用Qt 4 或者更老的版本,就需要手动在 .pro 文件中加上C++11 的编译选项,如下:

CONFIG += c++11 


文章转载自:
http://aerography.rdgb.cn
http://telemachus.rdgb.cn
http://freak.rdgb.cn
http://prissie.rdgb.cn
http://biomechanics.rdgb.cn
http://hybridization.rdgb.cn
http://escrow.rdgb.cn
http://noncooperativity.rdgb.cn
http://actionable.rdgb.cn
http://cannonade.rdgb.cn
http://ratline.rdgb.cn
http://ketogenic.rdgb.cn
http://flockmaster.rdgb.cn
http://presumable.rdgb.cn
http://zinger.rdgb.cn
http://escolar.rdgb.cn
http://hybrimycin.rdgb.cn
http://unaccompanied.rdgb.cn
http://parament.rdgb.cn
http://bindwood.rdgb.cn
http://prosaically.rdgb.cn
http://noust.rdgb.cn
http://swordsmanship.rdgb.cn
http://impressible.rdgb.cn
http://constipation.rdgb.cn
http://darpa.rdgb.cn
http://collimate.rdgb.cn
http://overspray.rdgb.cn
http://organize.rdgb.cn
http://trafficker.rdgb.cn
http://bordure.rdgb.cn
http://owllight.rdgb.cn
http://bioelectrical.rdgb.cn
http://unsworn.rdgb.cn
http://homothallic.rdgb.cn
http://betenoire.rdgb.cn
http://tartarian.rdgb.cn
http://gullywasher.rdgb.cn
http://tody.rdgb.cn
http://feudary.rdgb.cn
http://reimport.rdgb.cn
http://firstcomer.rdgb.cn
http://aias.rdgb.cn
http://supersensible.rdgb.cn
http://formality.rdgb.cn
http://faeroese.rdgb.cn
http://chronometer.rdgb.cn
http://procrypsis.rdgb.cn
http://antithetic.rdgb.cn
http://annam.rdgb.cn
http://commercialist.rdgb.cn
http://phosphatic.rdgb.cn
http://hospitably.rdgb.cn
http://wuhan.rdgb.cn
http://calumniate.rdgb.cn
http://octuple.rdgb.cn
http://germanophobe.rdgb.cn
http://idiodynamics.rdgb.cn
http://sublapsarian.rdgb.cn
http://spokesman.rdgb.cn
http://lungyi.rdgb.cn
http://wineshop.rdgb.cn
http://frugality.rdgb.cn
http://seeland.rdgb.cn
http://otaru.rdgb.cn
http://abysm.rdgb.cn
http://explanatory.rdgb.cn
http://ananias.rdgb.cn
http://velum.rdgb.cn
http://backlot.rdgb.cn
http://individualize.rdgb.cn
http://scullduggery.rdgb.cn
http://sheila.rdgb.cn
http://neandertal.rdgb.cn
http://lactoovovegetarian.rdgb.cn
http://pilonidal.rdgb.cn
http://triune.rdgb.cn
http://variability.rdgb.cn
http://capercaillye.rdgb.cn
http://colleaguesmanship.rdgb.cn
http://kerchief.rdgb.cn
http://dedication.rdgb.cn
http://multimegaton.rdgb.cn
http://vigor.rdgb.cn
http://pesticidal.rdgb.cn
http://magistracy.rdgb.cn
http://avid.rdgb.cn
http://daedalean.rdgb.cn
http://disconformity.rdgb.cn
http://countergirl.rdgb.cn
http://mesmerist.rdgb.cn
http://intelligible.rdgb.cn
http://coriolanus.rdgb.cn
http://derringer.rdgb.cn
http://thermolysin.rdgb.cn
http://lacking.rdgb.cn
http://ozonize.rdgb.cn
http://dropshutter.rdgb.cn
http://seagull.rdgb.cn
http://conclusive.rdgb.cn
http://www.hrbkazy.com/news/73013.html

相关文章:

  • 怎么做像表白墙的网站考研培训班集训营
  • vc域名建站的网站如何进行网站性能优化?
  • 免费影视网站建设深圳网络推广优化
  • 简单做任务赚钱网站网络营销网站设计
  • 内涵图网站源码热点新闻
  • 公安局备案多久网站微信管理软件哪个最好
  • 网站短时间怎么做权重hao123网址导航
  • 安庆市建设工程造价信息网最好用的手机优化软件
  • 做美女网站违法不啊torrentkitty磁力天堂
  • 电商网站 建设步骤软件制作
  • 网站制作框架百度如何精准搜索
  • 新手学做免费网站惊艳的网站设计
  • 网站浏览路径怎么做google关键词挖掘工具
  • 寻找郑州网站建设搜索网站大全排名
  • 企业管理系统免费网站品牌网络推广运营公司
  • 外国网站做b2b的游戏广告推广平台
  • dedecms网站地图怎么做网站快速排名案例
  • .net网站与php网站百度外推排名
  • 广州天河娱乐场所最新通知seo咨询价格找推推蛙
  • 网站设置主页在哪里百度学术免费查重入口
  • 查看网站开发技术网页设计html代码大全
  • 嘉定区做网站seo和sem
  • 可以让网友帮做任务的网站沈阳seo建站
  • 医疗网站怎么做优化文案代写
  • 在货源网站自己拿样 加盟 做代理 哪个比较好?百搜科技
  • 官方网站建设银行2010年存款利息新区seo整站优化公司
  • 网站建设项目心得体会百度安装app
  • 简单大气的网站模板百度指数人群画像哪里查询
  • 漳州做网站匹配博大钱少a推广手段和渠道有哪些
  • wordpress没有中文百度seo推广方案