Qt信号与槽(1)

目的:通过主窗口与子窗口之间切换来 学习信号与槽的应用

平台:win10  QtCreater5.7 

效果:

实现过程:

  一、工程建立

1、基于widget基类建立工程

2、添加子窗口类

二、代码实现

1、在主窗口类定义相关类对象、槽和信号

//    声明button对象
    QPushButton *pBtn1;
    QPushButton *pBtn2;
    QPushButton *pBtn3;
 
    subwidget subWindows;
 
    void ChanbeBtnText(bool );
 
    void SoltHideMe();
    void SlotsShowMe();

2、在主窗口类的构造函数添加主窗口上的相关控件、设置信号和槽:

//    设置窗体标题和固定大小
    this->setWindowTitle("主窗体----第一个QT程序");
    this->resize(800,600);
    this->setFixedSize(800,600);
//      在窗体上放置两个button
    pBtn1 = new QPushButton("第一个Button",this);
    pBtn1->move(10,10);
 
    pBtn2 = new QPushButton;
    pBtn2->setParent(this);
    pBtn2->setText("第二个Button");
    pBtn2->move(10,50);
 
    pBtn3 = new QPushButton("显示子窗口",this);
    pBtn3->move(10,120);
 
 
//    创建关闭窗体信号和槽(信号和槽都是函数)
//    信号:只声明,不需要定义
//    槽:既要声明,也要定义,回调函数
//    connect(pBtn1,pBtn1->clicked,this,&mainwidget::close);
    //connect(pBtn1,&QPushButton::clicked,this,&mainwidget::close);
 
/*
 * 自定义槽函数:
 * 1、槽函数在QT5中 可以说是任意类的成员函数、全局函数,静态函数,lambda表达式(隐式函数)
 * 2、槽函数要和信号对应(返回值,参数)
 * 3、信号没有返回值,槽函数返回值值 void
 * 4、void msignal(int ,double,QString);
 *    void myslot(int ,double);
 * 5、槽函数的参数是为了接收信号传过来的数据
 * 6、槽函数的参数应该不能够大于信号的参数个数,可以小于信号的参数个数
 * 7、槽函数可以重载
*/
    //目的 :改变btn2的文本内容
    connect(pBtn1,&QPushButton::clicked,this,&mainwidget::ChanbeBtnText);
 
    connect(pBtn3,&QPushButton::clicked,this,&mainwidget::SoltHideMe);
    //connect(this,&QPushButton::clicked,)
    connect(&subWindows,&subwidget::SinnalSub,this,&mainwidget::SlotsShowMe);

 

3、在子窗口类的头文件定义相关自定义信号和槽及相关对象

signals:
 //自定义信号,必须使用signal声明
 void SinnalSub();
 /*
  * 1、可以有参数
  * 2、可以重载
  * 3、返回值:void
  * 4、发送信号:emit + 信号名
  * emit sigsub();
*/
public slots:
  void SlotsSubW();
private:
  QPushButton *pBtn3;

4、在子窗口类的构造函数实现控件添加,信号和槽设置。

    this->resize(400,300);
    this->setWindowTitle("子窗口");
    //this->windowTitle("子窗口") ;
    pBtn3 = new QPushButton("显示主窗口",this);
    pBtn3->resize(100,40);
    pBtn3->move(80,80);
    connect(pBtn3,QPushButton::clicked,this,&subwidget::SlotsSubW);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值