mainwindow
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QWidget>
#include <QPushButton>
#include "subwidget.h"
#include <QMainWindow>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
public slots:
void changewin();
void dealsignal();
void dealSolt(int,QString);
private:
Ui::MainWindow *ui;
QPushButton b3;
SubWidget sub;
};
#endif // MAINWINDOW_H
subwight
#ifndef SUBWIDGET_H
#define SUBWIDGET_H
#include <QWidget>
#include <QPushButton>
class SubWidget : public QWidget
{
Q_OBJECT
public:
explicit SubWidget(QWidget *parent = nullptr);
void sendSolt();
signals:
void mySinnal();
void mySinnal(int,QString);
public slots:
private:
QPushButton b;
};
#endif // SUBWIDGET_H
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "QPushButton"
#include "mypushbutton.h"
#include "QDebug"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
//创建一个按钮
QPushButton * btn = new QPushButton();
//show以顶层方式弹出控件
//btn in untitled
btn->setParent(this);
btn->setText("FirstButton");
btn->resize(100,100);
//btn->move(10,10);
//QPushButton * btn2 = new QPushButton("SecondButton",this);
//重置窗口
resize(600,400);
setWindowTitle("FirstWindow");
//设置固定窗口大小
setFixedSize(600,400);
//connect(mybtn,&MyPushButton::clicked,this,&QWidget::close);
b3.setParent(this);
b3.setText("Change to Child");
b3.move(50,50);
b3.resize(100,100);
//sub.setParent(this);
//sub.show();
connect(&b3,&QPushButton::released,this,&MainWindow::changewin);
//void (SubWidget::*funsignal)()=&SubWidget::mySinnal;
//connect(&sub,funsignal,this,&MainWindow::dealsignal);
// void (SubWidget::*testsignal)(int,QString)=&SubWidget::mySinnal;
// connect(&sub,testsignal,this,&MainWindow::dealSolt);
connect(&sub,SIGNAL(mySinnal()),this,SLOT(dealsignal()));
}
void MainWindow::dealSolt(int a ,QString str)
{
qDebug()<<a<<str.toUtf8().data();
}
void MainWindow::dealsignal()
{
sub.hide();
this->show();
}
void MainWindow::changewin()
{
sub.show();
this->hide();
}
MainWindow::~MainWindow()
{
delete ui;
}
subwight.cpp
#include "subwidget.h"
SubWidget::SubWidget(QWidget *parent) : QWidget(parent)
{
this->setWindowTitle("Child");
b.setParent(this);
b.resize(100,100);
b.move(60,60);
b.setText("change to Father");
connect(&b,&QPushButton::clicked,this,&SubWidget::sendSolt);
}
void SubWidget::sendSolt()
{
emit mySinnal();
emit mySinnal(400,"hello QT");
}
main.cpp
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}