1、demo1(主窗口子窗口的相互切换)

涉及的技术要点:
1、信号与槽函数连接
1)信号:普通函数,只需声明,无需实现
2)槽函数:QT5中任意成员函数,静态函数,全局函数和lambda表达式
3)信号与槽没有返回值,但可以有参数
4)信号与槽的参数列表必须一致;例如:void sg(int,double,char);void sl(int,double,char);
5)信号与槽函数的参数个数可以不一样,信号的个数大于槽函数个数
6)一个信号可以连接多个槽函数,一个槽函数可以被多个信号连接
7)信号可以连接信号
8)信号与槽断开连接,disconnect()

2、写了一个子类
3、两个窗口之间信号的传递
信号与槽函数代码片段:
子函数部分

#ifndef SUBWINDOW_H
#define SUBWINDOW_H
#include <QWidget>
#include <QPushButton>
class subWindow : public QWidget
{
    Q_OBJECT
public:
    explicit subWindow(QWidget *parent = nullptr);
    QPushButton p2;
signals:
    void sendSg();
public slots:
    void mySlot();
};


#endif // SUBWINDOW_H


cpp:

#include "subwindow.h"


subWindow::subWindow(QWidget *parent) : QWidget(parent)
{
p2.setParent(this);
p2.setText("123");
setWindowTitle("son");
connect(&p2,&QPushButton::clicked,this,&subWindow::mySlot);//信号与槽


}
void subWindow::mySlot()
{
    emit sendSg();//发送信号
}


主窗口部分:
头文件:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QPushButton>
#include <QMainWindow>
#include "subwindow.h"
namespace Ui {
class MainWindow;
}


class MainWindow : public QMainWindow
{
    Q_OBJECT


public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();


public slots:
    void dealSlot();
    void changeWindow();
private:
    Ui::MainWindow *ui;
    QPushButton p;
    subWindow subWin;
};


#endif // MAINWINDOW_H


cpp部分:

#include "mainwindow.h"
#include "ui_mainwindow.h"


MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    setWindowTitle("fatherWindow");
    p.setParent(this);
    p.move(50,50);
    p.resize(100,50);
    p.setText("abc");
    connect(&p,&QPushButton::clicked,this,&MainWindow::changeWindow);
    connect(&subWin,&subWindow::sendSg,this,&MainWindow::dealSlot);//接受来自子类的信号,并在主窗口执行槽函数
}


MainWindow::~MainWindow()
{
    delete ui;
}
void MainWindow::changeWindow()
{
    this->hide();
    subWin.show();
}
void MainWindow::dealSlot()
{
    this->show();
    subWin.hide();


}


运行结果:
在这里插入图片描述在这里插入图片描述
点击按钮切换不同界面。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值