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

可信网站值得做吗小程序赚钱的方式

可信网站值得做吗,小程序赚钱的方式,wordpress 相册 免费模板,深圳网站建设现重载的信号槽 函数指针: int fun(int a,long b) int (*funp)(int, long) fun; 实现回调函数就需要函数指针 信号重载 派生类槽函数发送两个信号 派生类给父类发两个信号 void (SubWidget::*mysigsub)() &SubWidget::sigSub;connect(&subw,mysigsub,t…

重载的信号槽

函数指针:

int fun(int a,long b)

int (*funp)(int, long) = fun;

实现回调函数就需要函数指针

信号重载

在这里插入图片描述

派生类槽函数发送两个信号

在这里插入图片描述

派生类给父类发两个信号

在这里插入图片描述

    void (SubWidget::*mysigsub)() = &SubWidget::sigSub;connect(&subw,mysigsub,this,&MainWidget::slotShowMe);void (SubWidget::*mysigsub1)(int,QString) = &SubWidget::sigSub;connect(&subw,mysigsub1,this,&MainWidget::slotSubMsg);
void MainWidget::slotSubMsg(int number, QString str)
{qDebug()<<number<<str;
}

既然QT4在函数重载这么好用,为什么不用?

自定义信号槽必须声明
在这里插入图片描述

拓展:

一个信号可以和多个槽相连

如果是这种情况,这些槽会一个接一个的被调用,但是槽函数调用顺序是不确定的。像上面的例子,可以将一个按钮点击信号连接到关闭窗口的槽函数,同时也连接到学生请吃饭的槽函数,点击按钮的时候可以看到关闭窗口的同时也学生请吃饭的log也打印出来。

多个信号可以连接到一个槽

只要任意一个信号发出,这个槽就会被调用。如:一个窗口多个按钮都可以关闭这个窗口。

一个信号可以连接到另外的一个信号

当第一个信号发出时,第二个信号被发出。除此之外,这种信号-信号的形式和信号-槽的形式没有什么区别。注意这里还是使用connect函数,只是信号的接收者和槽函数换成另一个信号的发送者和信号函数。

//必须使用函数指针解决重载问题
void (SubWidget::*mysigsub)() = &SubWidget::sigSub;
connect(bt2,&QPushButton::pressed,this,mysigsub);
通过上面的函数,也实现了最终结果
也就是第一个信号发出时,第二个信号也被发出。

在这里插入图片描述

槽函数可以使用lambda表达式

完整代码

mainwidget.cpp

#include "mainwidget.h"
#include <QDebug>MainWidget::MainWidget(QWidget *parent): QWidget(parent)
{this->setFixedSize(400,400);this->setWindowTitle("QQ登陆");this->setWindowIcon(QIcon("/home/yangyu/DailyFILE/picture/52.jpg"));b3 = new QPushButton("登陆",this);b3->resize(80,40);b3->move(300,350);connect(b3,&QPushButton::clicked,this,&MainWidget::slotHideMe);void (SubWidget::*mysigsub)() = &SubWidget::sigSub;connect(&subw,mysigsub,this,&MainWidget::slotShowMe);void (SubWidget::*mysigsub1)(int,QString) = &SubWidget::sigSub;connect(&subw,mysigsub1,this,&MainWidget::slotSubMsg);b4 = new QPushButton("注册",this);b4->resize(80,40);b4->move(20,350);connect(b4,&QPushButton::clicked,this,&MainWidget::slotHideMe_login);connect(&logw,&loginwidget::loginsignal,this,&MainWidget::slotShowMe_login);
}MainWidget::~MainWidget()
{}
void MainWidget::slotForMainWidget()
{b2->setText("注销");
}
void MainWidget::slotHideMe()
{//隐藏自己,显示QQ邮箱this->hide();subw.show();
}void MainWidget::slotShowMe()
{show();subw.hide();
}
void MainWidget::slotHideMe_login()
{//隐藏自己,显示QQ邮箱this->hide();logw.show();
}
void MainWidget::slotShowMe_login()
{show();logw.hide();
}
void MainWidget::slotSubMsg(int number, QString str)
{qDebug()<<number<<str;
}

subwidget.cpp

#include "subwidget.h"SubWidget::SubWidget(QWidget *parent) : QWidget(parent)
{          //相当于主窗口的一个子窗口bt1 = new QPushButton(this);bt1->setText("确认");bt1->resize(0,350);bt2 = new QPushButton(this);bt2->setText("退出");bt2->resize(80,40);bt2->move(300,350);this->setWindowTitle("QQ邮箱");this->setFixedSize(400,400);this->setWindowIcon(QIcon("/home/yangyu/DailyFILE/picture/58.jpg"));connect(bt2,&QPushButton::pressed,this,&SubWidget::MySlot);}
SubWidget::~SubWidget()
{}
void SubWidget::MySlot()
{//隐藏自己,显示QQ邮箱emit sigSub();//发送信号emit sigSub(520,"666");//发送信号
}

subwidget.h

#ifndef SUBWIDGET_H
#define SUBWIDGET_H#include <QWidget>
#include <QPushButton>class SubWidget : public QWidget
{Q_OBJECT
public:explicit SubWidget(QWidget *parent = nullptr);~SubWidget();signals:void sigSub();void sigSub(int num,QString str);public slots://自定义槽函数void MySlot();//void MySlot1();
private:QPushButton *bt1;//(确认)QPushButton *bt2;//(退出)隐藏自己,显示QQ登陆
};#endif // SUBWIDGET_H

mainwidget.cpp

#ifndef MAINWIDGET_H
#define MAINWIDGET_H#include <QWidget>
#include <QPushButton>
#include "subwidget.h"
#include "loginwidget.h"class MainWidget : public QWidget
{Q_OBJECTpublic:MainWidget(QWidget *parent = 0);~MainWidget();//自定义槽函数void slotForMainWidget();void slotHideMe();void slotShowMe();void slotHideMe_login();void slotShowMe_login();void slotSubMsg(int number,QString str);
private:QPushButton* b1;QPushButton* b2;QPushButton* b3;//(登陆)隐藏自己显示QQ邮箱QPushButton* b4;//(注册)隐藏自己显示QQ注册SubWidget subw;loginwidget logw;
};#endif // MAINWIDGET_H

loginwidget.cpp

#include "loginwidget.h"loginwidget::loginwidget(QWidget *parent) : QWidget(parent)
{bt1 = new  QPushButton(this);bt1->resize(80,40);bt1->setText("返回");bt1->move(300,350);this->setWindowTitle("QQ注册");this->setFixedSize(400,400);connect(bt1,&QPushButton::pressed,this,&loginwidget::loginslots);this->setWindowIcon(QIcon("/home/yangyu/DailyFILE/picture/50.jpg"));}
void loginwidget::loginslots()
{emit loginsignal();//发送自定义信号
}

loginwidget.h

#ifndef LOGINWIDGET_H
#define LOGINWIDGET_H#include <QWidget>
#include <QPushButton>
class loginwidget : public QWidget
{Q_OBJECT
public:explicit loginwidget(QWidget *parent = nullptr);signals://自定义信号void loginsignal();public slots://自定义槽函数void loginslots();private:QPushButton *bt1;//上一页
};#endif // LOGINWIDGET_H

最终效果

在这里插入图片描述

槽函数做lambda表达式

不需要考虑太多,按照下面写

  connect(b3,&QPushButton::clicked,this,[=](){b4->setText("lambda");});

如果槽函数很复杂,那就建议使用槽函数。

如果比较简单,可以使用lambda表达式

http://www.yayakq.cn/news/957067/

相关文章:

  • 徐州网站建设方案优化wordpress+优化速度
  • 网站开发 科技泰安市星际网络科技有限公司
  • 南通建设招聘信息网站鞍山网站制作小程序
  • 教务管理网站开发wordpress 博客主题推荐
  • 外贸网址建站如何在修改wordpress
  • wordpress 建站 图床六盘水合肥电商网站建设
  • 建设一个跟京东一样的网站上海网站营销推广
  • 苏州高端网站定制3090服务器租用
  • 自己做的网站收费为什么只有中国做网站需要备案
  • 网站 美食频道 建设网站开发分包
  • 响应式网站怎么做才实用凡科互动怎么发布
  • 怎么做网站空间ppt免费制作网站
  • 网站管理员密码做网站用的编程语言
  • 外贸网站首页网站开发用台式机电脑配置
  • 南开做网站公司福建进入一级战备
  • 什么是电子商务网站制作一个私人网站怎么申请域名
  • 建设宣传网站的必要性网站开发人员
  • 网站建设优化服务行情网站备案需要几天
  • 网站建设中哪些最重要公司注册流程及注意事项及细节
  • ASP个人网站的建设国家企业信用信息查询全国
  • 怎么知道一个网站的权重中国建设工程信息网招标公告
  • 自己做的网站可以开直播免费微商城平台官网
  • 提供网站建设教学视频湘潭网站建设多少钱
  • 珠海网站制作推广公司垂直门户网站
  • 传媒公司做网站编辑_如何?网站设计主要做什么
  • 大良营销网站建设效果滕州网站建设优化
  • 有哪些是外国人做的网站吗邢台网站制作公司
  • 学校网站建设是什么意思大学生网站建设课程总结
  • 公司网站模板下载智能网站建设公司
  • 合伙做网站app下载登录