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

网站做百度百科的好处同城手机网站开发

网站做百度百科的好处,同城手机网站开发,宝安专业做网站,宣传制作清单及价格目录 概述 Q_OBJECT 自定义信号 自定义槽 带参数的信号和槽 信号与槽断开 定义槽函数时#xff0c;使用lambda表达式 概述 所谓的信号槽#xff0c;要解决的问题#xff0c;就是响应用户的操作#xff0c;这是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内置的信号基本上已经覆盖到了上述所有可能的用户操作。 信号是一类非常特殊的函数程序员只要写出函数声明并且告诉Qt这是一个”信号即可“这个函数的定义是Qt在编译过程中自动生成的程序员无法干预。信号在Qt中是特殊的机制Qt生成的信号函数的实现要配合Qt框架做很多既定的操作。作为信号函数这个函数的返回值必须是void有没有参数都可以甚至也可以支持重载 代码实例 #ifndef WIDGET_H #define WIDGET_H#include QWidgetQT_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.hWidget::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语法是C11中引入的对于Qt 5及其更高版本默认就是按照C 11来编译的如果使用Qt 4 或者更老的版本就需要手动在 .pro 文件中加上C11 的编译选项如下 CONFIG c11
http://www.hkea.cn/news/14387959/

相关文章:

  • 72建站网杭州建设网双标化工地2022年
  • 榆垡网站建设洛阳制作网站公司吗
  • 绍兴市交通建设有限公司网站财务软件费用计入什么科目
  • 哪个网站做h5好宁波网站制作方案
  • 站群系统的优劣什么样的网站适合推广
  • 天津市建设 银行网站教做视频的网站
  • 网站建设设计计划表天津网站建设定制
  • 怎样做网站 app教程上海网站建设电话
  • 上海建设网站平台自己做的网站响应速度慢
  • 喷码机营销型网站网址导航主页哪个好
  • 铁岭网站开发公司apache 本地网站
  • wordpress登录才可评论外贸seo网站推广公司
  • 淄博网站推广那家好wordpress mu常见问题解答
  • wordpress主题代码放在哪里安卓优化大师
  • 四川省工程造价总站官网求个网站能用的
  • 大连网站建设全国建设工程执业资格注册中心网站
  • 站长统计app软件下载wordpress网页手机自适应
  • 用php做视频网站有哪些怎么创办一个网站
  • 网站与支付宝对接杭州市建设工程质量安全监督总站网站
  • jquery 单击input输入框弹出选择框多用于人才类网站php 做网站 python
  • wordpress 建站公司怎样打开网站制作
  • 下陆区建设局网站网络维护实践报告3000
  • 奇网企业网站管理系统网站开发明细
  • 做彩票网站要什么接口oa办公系统管理软件
  • 做的网站怎么让百度收索时搜网站开发checklist
  • iis默认网站怎么设置江苏seo和网络推广
  • 网站做3年登陆官网登录入口
  • 站长工具关键词挖掘2021没封的网站uc
  • 学外贸英语的网站论坛seo教程
  • 门户网站建设请示dz网站设置了关键词但是不显示