两个独立窗口

增加第二个窗口

1、

 2、

3

主窗口文件添加一个私有成员为子窗口

在mainwidget.h文件

同时添加两个槽;来处理两个窗口;

void changwindow();主窗口 按键后进入这个槽
void dealsubwindows(); 子窗口的发信号 后  进入这个槽
#ifndef MAINWIDGET_H
#define MAINWIDGET_H

#include<QPushButton>//添加按键头文件
#include <QWidget>
#include"subwidget.h"

class mainWidget : public QWidget
{
    Q_OBJECT

public:
    mainWidget(QWidget *parent = 0);
    ~mainWidget();
    void myslot();//声明一个共有 ,自定义一个槽为共有成员
    void changwindow();//添加一个槽 关闭 主窗口 打开子窗口
    void dealsubwindows();//添加一个槽 关闭子 开主窗口
private:  //添加两个私有成员 按键控件
    QPushButton b1;
    QPushButton *b2;
    QPushButton b3;//设置b3按钮

    subwidget w;//添加一个私有为子窗

};

#endif // MAINWIDGET_H

定义两个槽函数和  关联按钮和子窗口和主窗口

mainwidget.c文件里面

#include "mainwidget.h"
#include<QPushButton>
mainWidget::mainWidget(QWidget *parent)
    : QWidget(parent)
{
   b1.setParent(this);//this 是这个窗口。就是main函数构造的w
   b1.setText("close");
   b1.move(100,100);

   b2 = new QPushButton(this);//新建个空间给b2指针
   b2->setText("send");
//   connect(&b1,&QPushButton::pressed,this,&mainWidget::close   );
   //按键(信号发出者) ,按键发出者的类 ::(作用域)类的函数(发送的信号),接收者(窗口),接收动作类+作用域+函数(槽函数)
   connect(b2,&QPushButton::pressed,this,&mainWidget::myslot);
   //按键(信号发出者) ,按键发出者的类 ::(作用域)类的函数(发送的信号),接收者(窗口),控件类+作用域+函数(槽函数)
   connect(b2,&QPushButton::pressed,&b1,&mainWidget::hide);//hide 隐藏
   //按键(信号发出者) ,按键发出者的类 ::(作用域)类的函数(发送的信号),接收者(按键),控件类+作用域+函数(槽函数)


   this->setWindowTitle("老大");
   b3.setParent(this);
   b3.setText("切换到子窗口");
   b3.move(50,50);
   connect(&b3,&QPushButton::released,this,&mainWidget::changwindow);//按钮 和槽的联系
  // w.show();
   connect(&w,&subwidget::mySinal,this,&mainWidget::dealsubwindows);//按钮 和槽的联系

  resize(500,500);//设定窗口大小
}

void mainWidget:: myslot()//槽函数的定义,自定义槽
{
    b2->setText("123");//槽函数的函数动作


}
void mainWidget::changwindow()//槽函数处理
{
    this->hide();//关掉mainWidget基类  主窗口
    w.show();//子窗口 显示

}
void mainWidget::dealsubwindows()//槽函数处理
{

    this->show();//打开mainWidget基类  主窗口
    w.hide();//子窗口 关闭

}
mainWidget::~mainWidget()
{

}

重点
connect(&w,&subwidget::mySinal,this,&mainWidget::dealsubwindows);//按钮 和槽的联系

w的信号 ,这个基类窗口 响应 槽函数;

添加子窗口成员

subwidget.h里面;添加个信号;添加个槽;添加个按钮

添加的信号成员;给主窗口接受的信号
signals:
     /*信号必须有signals 关键字来声明
      * 信号没有返回值,但可以有参数
      * 信号就是函数的声明,只需声明,无需定义
      * 使用:emit mySignal();
      * */
    void mySinal();

#ifndef SUBWIDGET_H
#define SUBWIDGET_H

#include <QWidget>
#include<QPushButton>//

class subwidget : public QWidget
{
    Q_OBJECT
public:
    explicit subwidget(QWidget *parent = 0);
    void sendSlots();//槽函数,响应按钮,发送信号
signals:
     /*信号必须有signals 关键字来声明
      * 信号没有返回值,但可以有参数
      * 信号就是函数的声明,只需声明,无需定义
      * 使用:emit mySignal();
      * */
    void mySinal();

public slots:
//新加的窗口 私有成员 按键 b
private:
    QPushButton b;


};

#endif // SUBWIDGET_H

子窗口处理函数

#include "subwidget.h"
#include<QPushButton>
subwidget::subwidget(QWidget *parent) : QWidget(parent)
{

    this->setWindowTitle("小弟");//设置子窗口的标题
    b.setParent(this);//给b指定 父类
    b.setText("返回主窗口");//设置按钮文本

   connect(&b,&QPushButton::clicked,this,&subwidget::sendSlots);//
   //按键 按下 这个基类相应个槽函

     resize(500,500);//限制大小
}

void subwidget::sendSlots()
{

    emit mySinal();//槽里面发送个信号 必须有emit 关键字
}

 emit mySinal();//槽里面发送个信号 必须有emit 关键字

补充回顾

构造函数是一种特殊的成员函数,用于创建和初始化对象时调用

所以在主函数中

mainWidget w;//执行基类的构造函数 声明,就执行构造函数
mainWidget::mainWidget(QWidget *parent) 这就是构造函数
    : QWidget(parent)
{

      里面的this  指定为 mainWidget类型的 声明 w 也就是窗口控件;

}

相关推荐

  1. QSS/QFrame/connect/窗口界面的连接/窗口的优化

    2024-04-28 04:28:03       33 阅读
  2. 交换变量

    2024-04-28 04:28:03       31 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-28 04:28:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-28 04:28:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-28 04:28:03       82 阅读
  4. Python语言-面向对象

    2024-04-28 04:28:03       91 阅读

热门阅读

  1. asp.net core 自定义过滤器 注入的几种方式和实现

    2024-04-28 04:28:03       33 阅读
  2. Mysql常用关键字详解

    2024-04-28 04:28:03       34 阅读
  3. Linux server

    2024-04-28 04:28:03       30 阅读
  4. mysql学前理论知识

    2024-04-28 04:28:03       31 阅读
  5. Vuex是什么?

    2024-04-28 04:28:03       38 阅读
  6. lua编译器介绍

    2024-04-28 04:28:03       38 阅读
  7. DSP实验

    2024-04-28 04:28:03       37 阅读
  8. leetCode59. 螺旋矩阵 II

    2024-04-28 04:28:03       36 阅读
  9. LeetCode 287 寻找重复数字

    2024-04-28 04:28:03       34 阅读