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

南京在线网站制作农产品推广方案

南京在线网站制作,农产品推广方案,企业网站建设常见问题,卓老师建站特色功能这里写目录标题 自定义的信号自定义的槽自定义的信号和槽的结合使用信号和槽的断开总结: 自定义的信号 信号就是一个函数声明 前面咱们都用的qt组件自带的信号,接下来我们自己写一个信号。 信号只需要在前面加一个signals即可 这个函数不需要实现 参数传…

这里写目录标题

  • 自定义的信号
  • 自定义的槽
  • 自定义的信号和槽的结合使用
  • 信号和槽的断开
  • 总结:

自定义的信号

信号就是一个函数声明

前面咱们都用的qt组件自带的信号,接下来我们自己写一个信号。

信号只需要在前面加一个signals即可
这个函数不需要实现
参数传了一个自定义的类型

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

自定义的槽

当有了自定义的信号,咱们再去搞一个自定义的槽。
在这里插入图片描述

注意:在自定义的槽函数,前面加了slots,其实也可以不加,但是不加的话,槽函数将无法使用转换成字符串的方式进行关联,因此建议在自定义槽函数时,最好加上slots.

槽函数是必须要做实现的在mainwindow.cpp中
在这里插入图片描述
然后咱们用一个按钮点击信号去关联咱们自定义的槽函数
随便教一下大家如何去用代码创建主键。
首先在mainwindow.h中添加按钮的数据类型

要包含头文件QPushButton

在这里插入图片描述
然后在mainwindow.cpp中new一个按键,并进行位置和大小的设置,最后设置按钮文字
在这里插入图片描述
然后按钮点击信号和我们的自定义的槽进行关联
在这里插入图片描述
运行效果:

在这里插入图片描述
这样就做到了自定义槽的使用

自定义的信号和槽的结合使用

上面都是用的组件已经有的信号,下面咱们用自己定义的信号和槽来玩玩。
mainwindow.h中

#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>
#include <QPushButton>QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACEstruct people
{QString name;int age;
};class MainWindow : public QMainWindow
{Q_OBJECTpublic:MainWindow(QWidget *parent = nullptr);~MainWindow();signals:void mySignal(people p);//自定义的信号传自定义的类型public slots:void mySlot();//自定义的槽void mySlot2(people p);//自定义的槽private:Ui::MainWindow *ui;QPushButton*btn;
};
#endif // MAINWINDOW_H

mainwindow.cpp中

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QPushButton>
#include <QDebug>MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);btn=new QPushButton(this);btn->setGeometry(200,200,100,50);btn->setText("超级大按钮");qRegisterMetaType<people>("people");//connect(btn,&QPushButton::clicked,this,&MainWindow::mySlot);connect(btn,SIGNAL(clicked()),this,SLOT(mySlot()));//必须在声明时,前面加slot// connect(this,SIGNAL(mySignal(people p)),this,SLOT(mySlot2(people p)));connect(this,&MainWindow::mySignal,this,&MainWindow::mySlot2);}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::mySlot()
{qDebug()<<"你点到我了"<<endl;people p;p.name="姚国林";p.age=19;emit mySignal(p);//自己写的信号只能手动发送信号
}void MainWindow::mySlot2(people p)
{qDebug()<<p.name<<" "<<p.age<<endl;disconnect(this,&MainWindow::mySignal,this,&MainWindow::mySlot2);
}

运行效果:
在这里插入图片描述
讲解:
1.connect(this,&MainWindow::mySignal,this,&MainWindow::mySlot2);首先对自定义的信号和槽进行了关联
2.自定义的信号要进行手动发出emit mySignal§;
3.当传的产生类型是自定义的时候,要在关联前加一个qRegisterMetaType(“people”); 其意在Qt中注册一个自定义数据类型people,使其能够在信号和槽之间进行传递。
注意:

信号的参数个数一定要大于等于槽的参数个数
槽的参数类型要与槽的参数类型相对应

信号和槽的断开

当你不想再关联了,或者是防止关联多次,可以使用disconnect进行断开。

当我将disconnect哪行代码进行注释时,我一直点按钮,就会一直输出’你点到我了’和我的信息。
在这里插入图片描述
当我添加上这行代码,它只会第一次出现我的信息,后面就关联不上了。
在这里插入图片描述

disconnect你要断开那个信号槽,后面就输填入相关的信号槽,跟connect一样。
disconnect的多种形式:
在这里插入图片描述

总结:

到这里信号槽也就讲完了。
总的来说信号和槽,都是一个函数
信号是不用做实现的函数
槽是要做具体实现的函数
ui界面的组件都有自己的信号和槽,信号也可以自动发出,我们只需要进行关联即可,手动或者自动关联
如果自定义信号和槽要注意:

  • 定义信号前要加signals
  • 定义槽函数前最好加上slots
  • 参数是自定义的类型,需要加qRegisterMetaType(“class”);
  • 只能手动发出信号 emit

也是成功的将信号槽机制讲完了,你一定可以!愿君更上一层楼!
前行的路总是孤独的,也希望能跟大家成为朋友,一起前进!
快来互粉(^-^)V

http://www.hkea.cn/news/513659/

相关文章:

  • 做窗帘网站图片百度自动点击器下载
  • 飘雪影视大全免费观看视频快推达seo
  • 做网站的装饰标语seo宣传网站
  • 国外 平面设计 网站百度收录
  • 做网站话术简述搜索引擎的工作原理
  • 现在建设网站赚钱吗seo外链论坛
  • 青海网站建设企业海南百度竞价推广
  • 南京做网站yuanmus电脑突然多了windows优化大师
  • 美国做deals的网站软文营销经典案例优秀软文
  • 招标网站怎么做吴江seo网站优化软件
  • 苏州建设工程协会网站seo去哪里学
  • 上海正规网站制作价格可口可乐软文营销案例
  • 番禺网站 建设信科网络站长之家ping
  • 建筑工程施工承包合同关键词优化报价推荐
  • 网站可以免费看企业网站系统
  • 中华人民共和国建设部网站seo怎么快速提高排名
  • 南宁做网站的有几家东莞网络营销网站建设
  • 苏州知名网站建设开发新区seo整站优化公司
  • 政府建设网站计划书品牌营销策略包括哪些内容
  • 深圳市做网站百度seo排名点击器app
  • 五莲网站建设维护推广网络营销推广及优化方案
  • 重庆网红整站多关键词优化
  • 动易网站cms一级消防工程师考试
  • wordpress更新报错想找搜索引擎优化
  • 提供网站建设费用资源网
  • wordpress怎么使用主题seo优化评论
  • 柳州做网站如何建网站详细步骤
  • 黄岛做网站哪家好四川seo关键词工具
  • dede门户网站模版写软文推广
  • 网站开发者排名开发一个app平台大概需要多少钱?