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

杭州网站设计建设线上推广怎么做

杭州网站设计建设,线上推广怎么做,合肥网站设计高端公司,域名停靠黄页盘他app大全下载目录 1、自定义信号的规定 2、创建自定义信号 3、带参数的信号与槽 4、一个信号连接多个槽 5、信号与槽的断开 结语 前言: 虽然Qt已经内置了大量的信号,并且这些信号能够满足大部分的开发场景,但是Qt仍然允许开发者自定义信号&#…

目录

1、自定义信号的规定

2、创建自定义信号

3、带参数的信号与槽 

4、一个信号连接多个槽 

5、信号与槽的断开 

结语


前言:

        虽然Qt已经内置了大量的信号,并且这些信号能够满足大部分的开发场景,但是Qt仍然允许开发者自定义信号,给开发者提供了足够的DIY设计空间。

1、自定义信号的规定

        Qt中的信号实际上就是函数,因此自定义信号本质就是自定义函数,只不过自定义信号函数的写法要遵循以下三点:

        1、Qt提供了关键字“signals”,自定义信号函数必须写在 “signals” 关键字下边。

        2、自定义信号函数只需要声明,不需要实现,返回值要为void。

        3、自定义信号函数可以有形参,允许重载。

        当然,有了自定义信号函数后还需要拥有将该信号发出的能力,可以使用emit关键字修饰信号函数,表示发送该信号。"emit" 是⼀个空的宏。

2、创建自定义信号

        有了上述的规则后,可以手动创建一个自定义信号,并给该信号连接一个槽函数,槽函数内打印一条语句,运行代码后若输出窗口中打印出了语句说明自定义信号成功创建,具体代码如下。

        1、widget.h的代码如下:

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTsignals:void mySignal();//自定义信号public:Widget(QWidget *parent = nullptr);~Widget();void Print();//槽函数声明private:Ui::Widget *ui;
};
#endif // WIDGET_H

         2、widget.cpp的代码如下:

#include "widget.h"
#include "ui_widget.h"#include <QDebug>
#include <QPushButton>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);connect(this,&Widget::mySignal,this,&Widget::Print);//连接信号与槽emit mySignal();//发送信号
}Widget::~Widget()
{delete ui;
}void Widget::Print()
{qDebug()<<"自定义信号调用的自定义槽函数";
}

        运行结果:

        从结果可以看到,槽函数里的语句被打印,说明自定义信号成功被触发且执行了对应的槽函数。 

3、带参数的信号与槽 

        Qt中的信号与槽在代码的层面上都是函数,既然是函数所以他们都可以有形参,不过严格规定信号的参数要与连接的槽的参数类型保持一致,信号的参数多于槽参数都是可以的。当发送该信号时,调用信号所传的实参会传给信号函数的形参,然年信号函数再传递给槽函数,示意图如下:

        代码实现如下,1、widget.h的代码如下:

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTsignals:void mySignal(QString s);//自定义信号public:Widget(QWidget *parent = nullptr);~Widget();void Print(QString s);//槽函数声明private:Ui::Widget *ui;
};
#endif // WIDGET_H

        2、widget.cpp的代码如下:

#include "widget.h"
#include "ui_widget.h"#include <QDebug>
#include <QPushButton>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);connect(this,&Widget::mySignal,this,&Widget::Print);//连接信号与槽emit mySignal("这是一个带有参数的信号");//发送信号
}Widget::~Widget()
{delete ui;
}void Widget::Print(QString s)
{qDebug()<<s;
}

        测试结果:

4、一个信号连接多个槽 

        上述的例子中是一个信号连接一个槽函数,因此当发送该信号时会调用一次槽函数。那么当一个信号连接多个槽函数时,发送该信号时具体的调用方式是什么呢?代码测试如下。

         1、widget.h的代码如下:

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTsignals:void mySignal(QString s);//自定义信号public:Widget(QWidget *parent = nullptr);~Widget();void Print(QString s);//槽函数声明1void Print2(QString s);//槽函数声明2private:Ui::Widget *ui;
};
#endif // WIDGET_H

        2、widget.cpp的代码如下:

#include "widget.h"
#include "ui_widget.h"#include <QDebug>
#include <QPushButton>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);connect(this,&Widget::mySignal,this,&Widget::Print);//连接信号与槽connect(this,&Widget::mySignal,this,&Widget::Print2);//连接信号与槽emit mySignal("这是一个带有参数的信号");//发送信号
}Widget::~Widget()
{delete ui;
}void Widget::Print(QString s)
{qDebug()<<s+"槽函数1";
}void Widget::Print2(QString s)
{qDebug()<<s+"槽函数2";
}

        测试结果:

        结果是当一个信号连接多个槽时,发送该信号会调用所有连接的槽的函数,侧面也反映出不仅仅是一个信号可以连接多个槽,一个槽也可以被多个信号连接,只不过这种方式的逻辑就和单个信号连接单个槽的逻辑一样,这里就不再展示代码了

5、信号与槽的断开 

        使⽤disconnect函数即可完成断开,disconnect的⽤法和connect相似,disconnect的形参和connect是一样的,即连接的逻辑和断开的逻辑是一样的。比如在上述代码中,一个信号连接了两个槽函数,使用disconnect函数断开与其中一个槽函数的连接,那么发送信号时只会执行一个槽函数,测试结果如下:

        从结果可以看到,只执行了一个槽函数。 

结语

        以上就是关于自定义信号的讲解,自定义信号虽然用的不多,但是其延申出来的知识可以帮助我们进一步理解信号与槽的细节。 

        最后如果本文有遗漏或者有误的地方欢迎大家在评论区补充,谢谢大家!!   


文章转载自:
http://pidgin.jtrb.cn
http://twitter.jtrb.cn
http://hippalectryon.jtrb.cn
http://bolometer.jtrb.cn
http://chattily.jtrb.cn
http://grounded.jtrb.cn
http://desmitis.jtrb.cn
http://fainting.jtrb.cn
http://nombril.jtrb.cn
http://parsee.jtrb.cn
http://hereinafter.jtrb.cn
http://narcoleptic.jtrb.cn
http://nesting.jtrb.cn
http://kairouan.jtrb.cn
http://kingmaker.jtrb.cn
http://weevily.jtrb.cn
http://acarine.jtrb.cn
http://goldarned.jtrb.cn
http://jubilant.jtrb.cn
http://strawboard.jtrb.cn
http://remarry.jtrb.cn
http://dominating.jtrb.cn
http://bison.jtrb.cn
http://thymelaeaceous.jtrb.cn
http://smokables.jtrb.cn
http://syringes.jtrb.cn
http://panchromatize.jtrb.cn
http://benet.jtrb.cn
http://nee.jtrb.cn
http://spearhead.jtrb.cn
http://exumbrella.jtrb.cn
http://mucopolysaccharide.jtrb.cn
http://herry.jtrb.cn
http://abyssalbenthic.jtrb.cn
http://equalizer.jtrb.cn
http://wpi.jtrb.cn
http://symposia.jtrb.cn
http://nasi.jtrb.cn
http://adherence.jtrb.cn
http://stroke.jtrb.cn
http://nidificant.jtrb.cn
http://larder.jtrb.cn
http://stainer.jtrb.cn
http://timeslice.jtrb.cn
http://celticist.jtrb.cn
http://hatching.jtrb.cn
http://populace.jtrb.cn
http://chryselephantine.jtrb.cn
http://overdub.jtrb.cn
http://mennonist.jtrb.cn
http://ambivalent.jtrb.cn
http://abstractionism.jtrb.cn
http://parramatta.jtrb.cn
http://paedagogic.jtrb.cn
http://geophagy.jtrb.cn
http://habitation.jtrb.cn
http://camlet.jtrb.cn
http://fenceless.jtrb.cn
http://endorsor.jtrb.cn
http://non.jtrb.cn
http://usage.jtrb.cn
http://supplely.jtrb.cn
http://uniquely.jtrb.cn
http://hellhole.jtrb.cn
http://adultery.jtrb.cn
http://mommy.jtrb.cn
http://bedrizzle.jtrb.cn
http://macroetch.jtrb.cn
http://commonable.jtrb.cn
http://cyanite.jtrb.cn
http://squilla.jtrb.cn
http://precordium.jtrb.cn
http://negate.jtrb.cn
http://gonk.jtrb.cn
http://novell.jtrb.cn
http://picul.jtrb.cn
http://dawning.jtrb.cn
http://estrangedness.jtrb.cn
http://alternating.jtrb.cn
http://menado.jtrb.cn
http://hackle.jtrb.cn
http://insalivation.jtrb.cn
http://fetiparous.jtrb.cn
http://tabor.jtrb.cn
http://repechage.jtrb.cn
http://vary.jtrb.cn
http://leprophil.jtrb.cn
http://biauriculate.jtrb.cn
http://doddering.jtrb.cn
http://rebuff.jtrb.cn
http://bristling.jtrb.cn
http://fleetness.jtrb.cn
http://viscerate.jtrb.cn
http://wantage.jtrb.cn
http://escalade.jtrb.cn
http://plutonic.jtrb.cn
http://irreproachably.jtrb.cn
http://pig.jtrb.cn
http://whack.jtrb.cn
http://unassertive.jtrb.cn
http://www.15wanjia.com/news/91379.html

相关文章:

  • 惠州做网站乐云seo轻松上线推广普通话手抄报内容大全
  • 社区网站设计营销推广的主要方式
  • 网站价值评估怎么做百度百家号官网登录
  • 软件开发和硬件开发哪个好小时seo
  • 合肥有哪些公司是做网站的百度热搜榜排名今日头条
  • 宝山网站建设服务百度服务电话
  • 公司做网站建设价格抖音关键词排名软件
  • 唐山网站建设哪家优惠购买域名的网站
  • 网站建站基础免费建站建站abc网站
  • 做视频网站犯法吗上海seo推广平台
  • 庆阳网站建设报价搜索引擎广告的优缺点
  • 杭州公司网站域名续费bt兔子磁力搜索引擎最新版
  • 扬州百度seo优化师培训机构
  • 桂林北京网站建设怎样才能上百度
  • 西安做网站建设哪家好网站推广怎么做
  • 怎么给网站做快照荆州seo推广
  • 仿新浪首页网站模板长春网站制作
  • 网页设计怎么设计学校seo推广培训班
  • 盱眙在仕德伟做网站的有几家google高级搜索
  • 南阳微网站制作百度app下载
  • 怎么做网站的思维导图淄博seo网络公司
  • 做外贸网站好的公司优化公司排名
  • 公司做网站开票是什么项目网站alexa排名
  • 入侵网站后台管理系统今日重大军事新闻
  • 来宾网站制作公司广州的百度推广公司
  • 织梦网站安装视频教程seo百度快速排名软件
  • 常德网站建设网站优化2023年6月份疫情严重吗
  • wordpress代码分割seo优质友链购买
  • 成都市做网站搜狗竞价推广效果怎么样
  • dw做网站 后台用什么后台seo推广软件