窗口属性
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
//设置窗口标题
this->setWindowTitle("xingnian");
//调试信息打印
//qDebug()<<"ceshi";
//窗口大小,可拉伸
this->resize(300,200);
//窗口大小,不可拉伸
//this->setFixedSize(300,200);
}
MainWindow::~MainWindow()
{
delete ui;
}
按钮
//创建按钮,先在类里创建指针,可以在有参构造时指定父对象和文本
//this->MyBtn1 = new QPushButton;
this->MyBtn1 = new QPushButton("按钮",this);
//设置父类,把按钮放窗口里
//MyBtn1->setParent(this);
//按钮文本设置
//MyBtn1->setText("按钮");
//移动按钮位置
MyBtn1->move(20,20);
//设置按钮大小
MyBtn1->setFixedSize(50,25);
connect绑定信号和槽
#include "widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
{
//设置窗口标题
this->setWindowTitle("xingnian");
//调试信息打印
//qDebug()<<"ceshi";
//窗口大小,可拉伸
this->resize(300,200);
//窗口大小,不可拉伸
//this->setFixedSize(300,200);
//创建按钮,先在类里创建指针,可以在有参构造时指定父对象和文本
//this->MyBtn1 = new QPushButton;
this->MyBtn1 = new QPushButton("按钮",this);
//设置父类,把按钮放窗口里
//MyBtn1->setParent(this);
//按钮文本设置
//MyBtn1->setText("关闭");
//移动按钮位置
MyBtn1->move(20,20);
//设置按钮大小
MyBtn1->setFixedSize(50,25);
connect(MyBtn1,&QPushButton::clicked,this,&Widget::close);
}
Widget::~Widget()
{
}
自定义槽函数
#include "widget.h"
#include "QDebug"
Widget::Widget(QWidget *parent)
: QWidget(parent)
{
//设置窗口标题
this->setWindowTitle("xingnian");
//调试信息打印
//qDebug()<<"ceshi";
//窗口大小,可拉伸
this->resize(300,200);
//窗口大小,不可拉伸
//this->setFixedSize(300,200);
//创建按钮,先在类里创建指针,可以在有参构造时指定父对象和文本
//this->MyBtn1 = new QPushButton;
this->MyBtn1 = new QPushButton("按钮",this);
//设置父类,把按钮放窗口里
//MyBtn1->setParent(this);
//按钮文本设置
//MyBtn1->setText("关闭");
//移动按钮位置
MyBtn1->move(20,20);
//设置按钮大小
MyBtn1->setFixedSize(50,25);
connect(MyBtn1,&QPushButton::clicked,this,&Widget::btnprint);
}
void Widget::btnprint(){
qDebug()<<"ceshi";
}
Widget::~Widget()
{
}
父窗口接收来自子窗口的信号
父窗口:
.h
#ifndef WIDGET_H
#define WIDGET_H
#include "widget_son.h"
#include <QWidget>
#include "QPushButton"
class Widget : public QWidget
{
Q_OBJECT
public:
widget_son* wig_son;
Widget(QWidget *parent = nullptr);
~Widget();
QPushButton* btn1;
public slots:
void showson();
void showbase();
};
#endif // WIDGET_H
.cpp
#include "widget.h"
#include "QDebug"
Widget::Widget(QWidget *parent)
: QWidget(parent)
{
//主窗口设置
this->setWindowTitle("主窗口");
this->resize(800,400);
//创建子窗口
this->wig_son = new widget_son();
wig_son->hide();
//创建按钮
btn1 = new QPushButton("子窗口",this);
btn1->show();
btn1->move(100,100);
connect(btn1,&QPushButton::clicked,this,&Widget::showson);
//接收来自子窗口的信号
connect(wig_son,&widget_son::emit_show_base,this,&Widget::showbase);
}
void Widget::showson(){
this->hide();
wig_son->show();
}
void Widget::showbase(){
this->show();
this->wig_son->hide();
}
Widget::~Widget()
{
qDebug()<<"父窗口析构";
}
子窗口:
.h
#ifndef WIDGET_SON_H
#define WIDGET_SON_H
#include "QPushButton"
#include <QWidget>
class widget_son : public QWidget
{
Q_OBJECT
public:
explicit widget_son(QWidget *parent = nullptr);
QPushButton* btn2;
public slots:
void showbase();
signals:
void emit_show_base();
};
#endif // WIDGET_SON_H
.cpp
#include "widget_son.h"
widget_son::widget_son(QWidget *parent)
: QWidget{parent}
{
//子窗口设置
this->setWindowTitle("子窗口");
this->resize(600,300);
//创建按钮
this->btn2 = new QPushButton();
btn2->setText("主窗口");
btn2->move(100,100);
btn2->setParent(this);
btn2->show();
//信号
connect(btn2,&QPushButton::clicked,this,&widget_son::showbase);
}
void widget_son::showbase(){
emit emit_show_base();
}