美文网首页
QT5添加控件,信号和槽

QT5添加控件,信号和槽

作者: 钊明 | 来源:发表于2020-03-18 14:15 被阅读0次

    学习来自https://www.bilibili.com/video/av34085761?p=11
    添加控件的头文件 <QPushButton>

    //如果不指定父窗口,对象和对象(窗口和控件)是独立的

    1.setParent

    2.通过构造函数传参

    指定父对象,只需要父对象显示,上面的子对象自动显示,如下:

    QWidget w; //父对象==>窗口

    QPushButton b; //子对象==>控件  也可以b(&w);

    b.setParent(&w);//指定父对象

    b.setText("标题");

    b.move(100,100);//设置控件移动坐标

    信号和槽

    如在构造函数MainWidgrt中在.h声明QPushButton b1;

    MainWidget::MainWidget(QWidget *parent)

    :QWidget(parent)

    {

        b1.setParent(this);

        b1.setText("close");

        connect(&b1, &QPushButton::pressed, this, &MainWidget::close);

    /*&b1: 信号发出者,指针类型

    *&QPushButton::pressed:处理的信号,  &发出者的类名::信号名字

    *this : 信号接收者

    *&MainWidget::close: 槽函数,处理的信号函数,&接收者的类名::信号名字

    */

    //在.h类中声明函数void Qsend();

        connect(&b1, &QPushButton::pressed, this, &MainWidget::Qsend);

    /*自定义槽,普通函数的用法

    *QT5:任意的成员函数,普通全局函数,静态函数

    *槽函数需要和信号一致(参数,返回值)

    *由于信号都是没有返回值,所以槽函数一定没有返回值

    */

    }

    //两个窗口间的信号传递

    //在其.h中声明SubWidget w;和声明信号处理函数void dealSub();

      MainWidget::MainWidget(QWidget *parent)//窗口1

    :QWidget(parent)

    {

        this->setWindowTitle("老大");

        b1.setParent(this);

        b1.setText("切换到子窗口");

    //处理子窗口的信号

        connect(&w,&SubWidget::mySignals, this, &MainWidget::dealSub);

        resize(300,300);//定义窗口大小

    }

    //在创建一个类窗口继承QWidget,在其.h中的signals:声明void mySignals();

    //和声明信号函数void sendSlot();

    /*信号必须有signals关键字

    *信号没有返回值,但可以有参数

    *信号就是函数的声明,只需声明,无需定义

    *使用: emit mySignals();

    */

      MainWidget::SubWidget(QWidget *parent)//窗口2

    :QWidget(parent)

    {

    this->setWindowTitle("小弟");

        b.setParent(this);

        b.setText("切换到主窗口");

        connect(&b, &QPushButton::clicked, this,$SubWidget::sendSlot);

        resize(300,300);//定义窗口大小

    }

    void MainWidget::sendSlot()

    {

        emit mySignals();

    }

    相关文章

      网友评论

          本文标题:QT5添加控件,信号和槽

          本文链接:https://www.haomeiwen.com/subject/uujfyhtx.html