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

随州网站建设有限公司个人申请注册公司需要多少钱

随州网站建设有限公司,个人申请注册公司需要多少钱,宏宇网站建设,在线创建网站免费网站文章目录 信号及其特点槽及其特点代码演示标准信号与标准槽函数方式一方式二 自定义信号和槽connect()函数信号和槽函数存在函数重载的情况下Qt的信号槽机制注意事项 信号及其特点 信号#xff1a;是一种特殊的函数#xff0c;又称信号函数#xff0c;俗称信号#xff0c;… 文章目录 信号及其特点槽及其特点代码演示标准信号与标准槽函数方式一方式二 自定义信号和槽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 QObjectclass 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_Hmyclass.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://www.w-s-a.com/news/226037/

相关文章:

  • 东莞做商城网站建设wordpress批量下载外链图片
  • 新网站建设运营年计划书仓山区建设局招标网站
  • 网站开发天津网站建设项目组织图
  • 网站开发认证考试石家庄高端网站开发
  • 网站建设第一步怎么弄站酷网页
  • 设备网站模板江西的赣州网站建设
  • 邯郸营销型网站国际招聘人才网
  • hexo wordpress 主题织梦网站优化教程
  • 网站建设方案及上海市建设协会网站
  • 轴承外贸网站怎么做南宁网站排名优化公司哪家好
  • 沈阳企业网站建站郴州优化公司
  • cctv5+手机在线直播观看seo关键词排名优化方法
  • 网站建设公司怎么谈单怎么开通微信小程序商店
  • 深圳做网站案例一个服务器可以备案几个网站
  • 网络营销策划名词解释泉州百度推广排名优化
  • 一键生成网站的软件互联网营销师是干什么
  • 网站后台管理水印怎么做手机优化设置
  • 哪个网站做图文素材多wordpress++优化
  • 建设网站就选用什么样的公司网站类型分类有哪些
  • 找平面设计师网站网站建设须知
  • 建设联结是不是正规网站wordpress 微博同步
  • 瑞安微网站建设广州推广
  • 做旅游宣传网站的流程图中国企业集成网电子商务
  • 开发商城网站开发成交功能网站
  • 网站建设公司专业公司排名搭建网站的企业
  • 网站建设难吗海南智能网站建设报价
  • 企业网站建设选题的依据及意义校园网站建设的论文
  • 网站版面设计方案水电维修在哪个网站上做推广好些
  • 邹平建设局官方网站企业宣传片广告公司
  • 南京建设集团网站建站极速通