增加第二个窗口

1、

两个独立窗口-LMLPHP

 2、

两个独立窗口-LMLPHP

3

两个独立窗口-LMLPHP

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

在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()
{

}

添加子窗口成员

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

#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 关键字
}

补充回顾

04-28 03:34