widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QPushButton>
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = 0);
~Widget();
void myslot();
private:
QPushButton b1;
QPushButton *b2;
};
#endif // WIDGET_H
widget.cpp
#include "widget.h"
#include <QPushButton>
Widget::Widget(QWidget *parent)
: QWidget(parent)
{
b1.setParent(this);
b1.setText("close");
b1.move(100,100);
b2 = new QPushButton(this);
b2->setText("abc");
connect(&b1,&QPushButton::pressed,this,&Widget::close);
connect(b2,&QPushButton::released,this,&Widget::myslot);
connect(b2,&QPushButton::released,&b1,&QPushButton::hide);
}
void Widget::myslot()
{
b2->setText("123");
}
Widget::~Widget()
{
}
subwidget.h
#ifndef SUBWIDGET_H
#define SUBWIDGET_H
#include <QWidget>
#include <QPushButton>
class subwidget : public QWidget
{
Q_OBJECT
public:
explicit subwidget(QWidget *parent = nullptr);
void setslot(); //发送信号
signals:
void mysignal();
public slots:
private:
QPushButton b;
};
#endif // SUBWIDGET_H
subwidget.cpp
#include "subwidget.h"
subwidget::subwidget(QWidget *parent) : QWidget(parent)
{
this->setWindowTitle("two");
b.setParent(this);
b.setText("切换到主窗口");
b.move(150,150);
connect(&b,&QPushButton::released,this,&subwidget::setslot);
resize(400,300);
}
void subwidget::setslot() //发送信号
{
emit mysignal();
}
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QPushButton>
#include "subwidget.h" //子窗口头文件
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr);
~Widget();
void changewin(); //改变窗口
void dealsub(); //处理子窗口信号
private:
QPushButton a;
subwidget w;
};
#endif // WIDGET_H
#include "widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
{
setWindowTitle("one");
//this->setWindowTitle("one");
a.setParent(this);
a.setText("切换到子窗口");
a.move(150,150);
//显示子窗口
//w.show();
connect(&a,&QPushButton::released,this,&Widget::changewin);
//处理子窗口的信号
connect(&w,&subwidget::mysignal,this,&Widget::dealsub);
//定义窗口大小
resize(400,300);
}
void Widget::changewin()
{
//子窗口显示
w.show();
//本窗口隐藏
this->hide();
}
void Widget::dealsub()
{
//主窗口显示
this->show();
//子窗口隐藏
w.hide();
}
Widget::~Widget()
{
}