https://blog.csdn.net/qq_41488943/article/details/96453771
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QMouseEvent>
#include <QPushButton>
#include <QPoint>
#include <mainwindow2.h>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = nullptr);
~MainWindow();
void dealmainwindow2(); //处理子窗口槽函数
private:
Ui::MainWindow ui;
//定义关闭按钮
QPushButton btnClose;
//定义QPoint坐标常量
QPoint last;
//声明新按钮
QPushButton * btnopen;
//声明新窗口
MainWindow2 w2;
private slots:
void showMainwindow2(); //显示子页面槽函数
//void reshowMainwindow(); //回到主页面槽函数
protected:
/*
*
//私有信号保护
//鼠标按下
void MousePressEvent(QMouseEvent *e);
//鼠标移动
void MouseMoveEvent(QMouseEvent *e);
//鼠标释放
void MouseReleaseEvent(QMouseEvent *e);
*
*/
};
#endif // MAINWINDOW_H
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "QIcon"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
/第一部分************/
this->setWindowTitle(“窗体变化”);
this->setMaximumSize(300,300); //最大尺寸
this->setMinimumSize(300,300); //最小尺寸
this->setStyleSheet(“background:white”); //设置背景色
this->setWindowIcon(QIcon(":/image/pig.ico")); //设置窗体图片
this->setWindowFlags(Qt::WindowCloseButtonHint); //去掉最大化和最小化按钮,保留关闭按钮
/**********************************************************/
/*第二部分/
//新增关闭按钮
btnClose = new QPushButton(this);
btnClose->setText("关闭按钮");
btnClose->move(100,100);
//链接信号与槽函数
connect(btnClose,SIGNAL(clicked()),this,SLOT(close()));
//定义打开的第二个窗口的按钮
btnopen = new QPushButton(this);
btnopen->setGeometry(QRect(100,200,100,25));
btnopen->setText("打开窗口");
connect(btnopen,SIGNAL(clicked()),this,SLOT(showMainwindow2()));
//connect(w2,SIGNAL(sensignal()),this,SLOT(reshowMainwindow()));
//处理子窗口的信号
connect(&w2,&MainWindow2::Mysignal,this,&MainWindow::dealmainwindow2);
/**********************************************************/
}
MainWindow::~MainWindow()
{
delete ui;
}
/鼠标事件/
/
//
void MousePressEvent(QMouseEvent *e)
{
QPoint last = e->globalPos();
}
//
void MouseMoveEvent(QMouseEvent *e)
{
QPoint last;
int dx = e->globalX() - last.x();
int dy = e->globalY() - last.y();
last = e->globalPos();
move(last.x() + dx, last.y() + dy);
}
//
void MouseReleaseEvent(QMouseEvent *e)
{
int dx = e->globalX() - last.x();
int dy = e->globalY() - last.y();
move(x()+dx, y()+dy);
}
*/
/**********************************************************/
void MainWindow::dealmainwindow2()
{
//按钮回到主窗口
w2.hide();
this->show();
}
void MainWindow::showMainwindow2()
{
//按钮显示mainwindow2窗口
w2.show();
}
#ifndef MAINWINDOW2_H
#define MAINWINDOW2_H
#include <QMainWindow>
#include <QPushButton>
namespace Ui {
class MainWindow2;
}
class MainWindow2 : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow2(QWidget *parent = nullptr);
~MainWindow2();
void Sendslot(); //发送信号槽函数
private:
Ui::MainWindow2 *ui;
signals:
void Mysignal(); //返回值信号
private:
QPushButton *returnButton; //控件声明
private slots:
//void returnMainwindow(); //子页面
};
#endif // MAINWINDOW2_H
#include "mainwindow2.h"
#include "ui_mainwindow2.h"
#include <mainwindow.h>
MainWindow2::MainWindow2(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow2)
{
ui->setupUi(this);
this->setWindowTitle(“窗口2”);
this->resize(300,300);
returnButton = new QPushButton(this);
returnButton->setText("返回主窗口");
returnButton->move(100,150);
connect(returnButton,&QPushButton::clicked,this,&MainWindow2::Sendslot);
}
MainWindow2::~MainWindow2()
{
delete ui;
}
void MainWindow2::Sendslot()
{
emit Mysignal();
}
/*
void MainWindow2::returnMainwindow()
{
this->close();
}
*/