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

r语言网站开发东莞网站建设seo

r语言网站开发,东莞网站建设seo,课程网站建设,商标设计网上接单第一平台文章目录 信号及其特点槽及其特点代码演示标准信号与标准槽函数方式一方式二 自定义信号和槽connect()函数信号和槽函数存在函数重载的情况下Qt的信号槽机制注意事项 信号及其特点 信号:是一种特殊的函数,又称信号函数,俗称信号,…

文章目录

  • 信号及其特点
  • 槽及其特点
  • 代码演示
    • 标准信号与标准槽函数
      • 方式一
      • 方式二
  • 自定义信号和槽
  • connect()函数
  • 信号和槽函数存在函数重载的情况下
  • Qt的信号槽机制注意事项

信号及其特点

信号:是一种特殊的函数,又称信号函数,俗称信号,用于在对象状态发生改变时通知其他对象。信号可以包含参数,但是它们不返回任何值。
信号必须位于类定义体中,形如:void clicked(bool checked = false); 返回类型必须为void,无参数时函数名后的括号也不能省略,没有函数体。就像成员函数的声明一样,与普通成员函数的区别,除了返回值只能是void外,还有就是信号没有函数体。
在这里插入图片描述
注意: Q_SIGNALS: 或 singals: 是不能够省略的。否则编译报错。

槽及其特点

槽:是一种接收信号的函数俗称槽函数,用于响应特定事件。槽函数可以被连接到一个或多个信号,并且可以有自己的参数和返回值。
与信号的最大区别就是 槽函数有函数体,返回值类型可以是任意类型。
槽函数的位置比较自由,可以位于类定义体中,可以是全局函数,还可以是lambda表达式。
在这里插入图片描述
注意: 有种情况下是不能省略这里的 public/protected/private slots: 或 public/protected/private Q_SLOTS: 下面讲方式一时再说

QT下自动的组件类中含有大量的信号和槽函数,又被称为标准信号,和标准槽函数。

代码演示

标准信号与标准槽函数

方式一

通过 QT creator 集成的 ui design下。演示 QT中的button组件中的常见的信号与槽函数。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
每一个 .ui 文件都对应一个相应的.h头文件,mainwindow.ui 对应的 .h文件为 ui_mainwindow.h。即将.ui文件的内容翻译为C/C++语言文件。
这两个文件都不能手动修改。通过 ui designer 修改界面后,.ui文件会自动更新,而调用build命令后 ui_mainwindow.h文件会根据相应的.ui文件自动更新。
在这里插入图片描述
在这里插入图片描述
也就是我们通过界面拖动的组件都会被转化相应的一个对象。然后对这个对象的属性进行赋值等操作。
在这里插入图片描述
在这里插入图片描述

方式二

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注意: 上图在MainWindow类中自动生成的槽函函数声明,前面的public/private/protected slots: 是不能省略的,否则后面 点击按钮二时,不会触发槽函数的调用。
在这里插入图片描述
在这里插入图片描述
我们发现并没有显示自动生成connect()函数进行信号和槽的关联代码。而且手动也没有添加connect()函数进行信号和槽的关联代码。
点击按钮二时 确可以调到on_pushButton_clicked函数。可以看下图:关键点 就是这行代码:QMetaObject::connectSlotsByName(MainWindow);
对应的槽函数的名称 格式必须是:on_信号发送者名称_信号名称(参数)
在这里插入图片描述
这种方式也有一个缺点(正如:QT警告Slots named on_foo_bar are error prone),就是当我们修改按钮二对象的名称后,这里的槽函数名称里的对象名称(也就是信号发送者名称)不会自动发生变化(除非再通过 Go to slot… 再生成一个新的参函数),那么编译和运行期都不会报错,但是槽函数确不会被调用。演示如下:
在这里插入图片描述
此时点击 按钮二 无任何 输出。因为 on_pushButton_clicked()不能被调到。
除非再添加一个on_pushButton2_clicked()函数并实现。
在这里插入图片描述

自定义信号和槽

myclass.h

#ifndef MYCLASS_H
#define MYCLASS_H
#include <QObject>class MyClass : public QObject
{Q_OBJECT
public:explicit MyClass(QObject *parent = nullptr);void custom_slot_0();//自定义槽函数signals:void custom_singal();//自定义信号public slots:void custom_slot_1();//自定义槽函数
};void custom_slot_2();//自定义槽函数#endif // MYCLASS_H

myclass.cpp

#include "myclass.h"
#include <QDebug>
MyClass::MyClass(QObject *parent): QObject{parent}
{}void MyClass::custom_slot_0()
{qDebug()<<"custom_slot_0";
}void MyClass::custom_slot_1()
{qDebug()<<"custom_slot_1";
}void custom_slot_2()
{qDebug()<<"custom_slot_2";
}

在主窗口类头文件中添加如下:
MyClass *myclass;
在这里插入图片描述
在主窗口类原文件中添加如下:
在这里插入图片描述
也可以写成下面这样:
在这里插入图片描述
在这里插入图片描述
在上方生成的槽函数函数体内,添加以下红框内容:
在这里插入图片描述
在这里插入图片描述

connect()函数

信号和槽关联是用QObject::connect()函数实现的,其基本格式是:

QObject::connect(sender,SIGNAL(singnal()),receiver,SLOT(slot())); //在QT4中,支持传递参数

connect()是QObject类的一个静态函数,而QObject是所有Qt类的基类,在实际调用时可以忽略前面的限定符:

connect(sender,SIGNAL(singnal()),receiver,SLOT(slot()));//在QT4中
connect(sender,SIGNAL(singnal()),receiver,SLOT(slot()));//在QT4中,支持传递参数

在QT5及以后版本支持如下格式:
连接信号和槽的connect()函数原型如下, 其中PointerToMemberFunction是一个指向函数地址的指针:

QMetaObject::Connection QObject::connect(const QObject *sender, PointerToMemberFunction signal, const QObject *receiver, PointerToMemberFunction method, Qt::ConnectionType type = Qt::AutoConnection);
参数:- sender:   发出信号的对象- signal:   属于sender对象, 信号是一个函数, 这个参数的类型是函数指针, 信号函数地址- receiver: 信号接收者- method:   属于receiver对象, 当检测到sender发出了signal信号, receiver对象调用method方法,信号发出之后的处理动作//  参数 signal 和 method 都是函数地址, 因此简化之后的 connect() 如下:
connect(const QObject *sender, &QObject::signal, const QObject *receiver, &QObject::method);

使用connect()进行信号槽连接的注意事项:

connect函数相对于做了信号处理动作的注册
调用conenct函数的sender对象的信号并没有产生, 因此receiver对象的method也不会被调用
method槽函数本质是一个回调函数, 调用的时机是信号产生之后, 调用是Qt框架来执行的
connect中的sender和recever两个指针必须被实例化了, 否则conenct不会成功

虽然在QT5及QT6中也支持QT4中那种方式调用,但目前不推荐使用QT4的那种connect()函数了。
但是有个问题是QT5中新增的这样connect()函数,在给信号或者槽函数传参时不能直接传递,因为它们都是传递的函数地址,所以必确确保函数无参并且函数名是唯一的,否则存在二义性,编译不过。下面说下信号和槽函数存在重载的情况下,如何使用。

信号和槽函数存在函数重载的情况下

myclass.h中添加重载函数
在这里插入图片描述
myclass.cpp文件中:
在这里插入图片描述
mainwindow.cpp:主窗口实现类中
在这里插入图片描述
关于 成员函数的地址及全局函数的地址获取方式可以看 类中成员函数及普通函数地址获取方式
在这里插入图片描述

在这里插入图片描述

Qt的信号槽机制注意事项

要使用Qt中的信号槽机制,必须继承QObject类,还需要在类的定义中的第一行写上一个宏Q_OBJECT

class MyClass: public QObject
{Q_OBJECT // 没有这个宏, 信号槽机制还是不能使用...
}

如果没有直接继承QObject,而是继承了一些继承QObject类的其他类也可以,比如QWidget类是QObject的子类,再有个类继承QWidget也能使用信号槽的机制。还比如QMainWindow类,QMainWindow继承QWidget类。再有个类继承QMainWindow同样也能使用信号槽的机制。

还有一点是,槽函数的参数个数要小于等于信号函数的参数个数。即如果信号函数是无参的,则与其绑定的槽函数也不能写形式参数。


文章转载自:
http://dinncopyrosis.ydfr.cn
http://dinncojarless.ydfr.cn
http://dinncodeschool.ydfr.cn
http://dinncocoquette.ydfr.cn
http://dinncomscp.ydfr.cn
http://dinncokokobeh.ydfr.cn
http://dinncokroll.ydfr.cn
http://dinncoawninged.ydfr.cn
http://dinncounreceptive.ydfr.cn
http://dinncosuppository.ydfr.cn
http://dinncohermitry.ydfr.cn
http://dinncoeternity.ydfr.cn
http://dinncofeminist.ydfr.cn
http://dinncocutification.ydfr.cn
http://dinncoilluminative.ydfr.cn
http://dinncoboaster.ydfr.cn
http://dinncospadeful.ydfr.cn
http://dinncorigidize.ydfr.cn
http://dinncohipster.ydfr.cn
http://dinncoordonnance.ydfr.cn
http://dinncosinai.ydfr.cn
http://dinncoquartal.ydfr.cn
http://dinncocurative.ydfr.cn
http://dinncoelspeth.ydfr.cn
http://dinncoquackish.ydfr.cn
http://dinncounaired.ydfr.cn
http://dinncobrachydactylic.ydfr.cn
http://dinncoraintight.ydfr.cn
http://dinncofooting.ydfr.cn
http://dinncomenshevism.ydfr.cn
http://dinncocommend.ydfr.cn
http://dinncowin95.ydfr.cn
http://dinncokashmiri.ydfr.cn
http://dinncoauthenticator.ydfr.cn
http://dinncojudgmatical.ydfr.cn
http://dinncolowish.ydfr.cn
http://dinncounderstaffed.ydfr.cn
http://dinncoimmobilon.ydfr.cn
http://dinncoguenon.ydfr.cn
http://dinncospeakable.ydfr.cn
http://dinncoappressorium.ydfr.cn
http://dinncograndmama.ydfr.cn
http://dinncodashiki.ydfr.cn
http://dinncodhtml.ydfr.cn
http://dinncoaffreight.ydfr.cn
http://dinncofisc.ydfr.cn
http://dinncoconsultatory.ydfr.cn
http://dinncoutilize.ydfr.cn
http://dinncozone.ydfr.cn
http://dinncopythonic.ydfr.cn
http://dinncolingonberry.ydfr.cn
http://dinnconitrotrichloromethane.ydfr.cn
http://dinncoothin.ydfr.cn
http://dinncoaccurate.ydfr.cn
http://dinncopurificator.ydfr.cn
http://dinncodeprecation.ydfr.cn
http://dinncononbook.ydfr.cn
http://dinncosuccussatory.ydfr.cn
http://dinncorambunctious.ydfr.cn
http://dinncocuspy.ydfr.cn
http://dinncotoughie.ydfr.cn
http://dinncoredemptory.ydfr.cn
http://dinncobabushka.ydfr.cn
http://dinncoagrostography.ydfr.cn
http://dinncoschoolwork.ydfr.cn
http://dinncohyperphagic.ydfr.cn
http://dinncohandlers.ydfr.cn
http://dinncodegression.ydfr.cn
http://dinncomartin.ydfr.cn
http://dinncopharmacal.ydfr.cn
http://dinncochub.ydfr.cn
http://dinncowarmaking.ydfr.cn
http://dinncotransvestism.ydfr.cn
http://dinncogravelstone.ydfr.cn
http://dinncosupervene.ydfr.cn
http://dinncowolfish.ydfr.cn
http://dinncobackstage.ydfr.cn
http://dinncoclobberer.ydfr.cn
http://dinncoserpiginous.ydfr.cn
http://dinncodiatomaceous.ydfr.cn
http://dinncoprobate.ydfr.cn
http://dinnconewsiness.ydfr.cn
http://dinncotantalizingly.ydfr.cn
http://dinncostinkball.ydfr.cn
http://dinncomusician.ydfr.cn
http://dinncolarghetto.ydfr.cn
http://dinncoanguiform.ydfr.cn
http://dinncochromophil.ydfr.cn
http://dinncoholofernes.ydfr.cn
http://dinncoiambi.ydfr.cn
http://dinncoclosefitting.ydfr.cn
http://dinncogallipot.ydfr.cn
http://dinncoreminiscently.ydfr.cn
http://dinncoalbigenses.ydfr.cn
http://dinnconewground.ydfr.cn
http://dinncorageful.ydfr.cn
http://dinncosoddy.ydfr.cn
http://dinncoshigellosis.ydfr.cn
http://dinncoduplex.ydfr.cn
http://dinncostenciler.ydfr.cn
http://www.dinnco.com/news/145161.html

相关文章:

  • 网站建设报价流程百度代理合作平台
  • 新手学做网站txt搜索引擎优化介绍
  • 新疆生产建设兵团交通厅网站网站seo诊断技巧
  • 佛山模板建站定制网站推广网站模板
  • 昆明做烤瓷牙哪去柏德L网站百度推广优化是什么?
  • 黄山景区的网站做的怎么样seo的推广技巧
  • 站酷设计网页版对网站进行seo优化
  • 宁波网站建设联系荣胜百度快照收录入口
  • 免费空间网站怎么做出来的seo人员招聘
  • 网站后端开发流程如何发布视频赚钱
  • 沧州做网站价格好搜网惠州seo
  • 武威网站建设优化游戏推广赚佣金平台
  • 天津网站建设seo优化seo是什么工作内容
  • 玉林网站优化店铺在百度免费定位
  • 怎么做app和网站购物车今日桂林头条新闻
  • 网站建设管理的建议官网seo是什么
  • 网站源码开发seo关键词排名优化系统
  • 关于网站开发的开题报告aso优化榜单
  • 动态网站开发实训心得800百度爱采购竞价推广
  • 大数据营销心得体会seo咨询常德
  • 如何推进政府网站建设方案百度收录官网
  • 原创音乐网站源码杭州网站排名seo
  • 网站开发html5百度西安分公司地址
  • 如何查询公司做没做网站seo交流网
  • 网站信息备案查询系统阿里巴巴官网首页
  • 网站域名备案服务号网站建设的整体流程有哪些
  • 重庆网站建设电脑版营销型企业网站的功能
  • 有没有淄博张店做兼职工作的网站网站怎么快速排名
  • 网站建设宣传党建八大营销模式有哪几种
  • 除了网页外 网站还需要seo百度刷排名