Qt快速入门:窗口之间的简单切换

5 篇文章 0 订阅

之前已经学习了简单的按钮设计,今天我们通过点击按钮事件来实现窗口之间的相互切换。

首先,要在已经有的项目之中创建一个类:

选中你的项目文件夹,右击,“添加新文件”,选中class直接choose,然后给你的类起个名字,并选中它的基类,如图所示。

点击下一步,查看一下添加到的项目是否有误,无误之后点击完成,一个新的类就创建好啦。

废话少说,直接上代码。

第一个窗口:widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include<QPushButton>
#include"child.h"

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = 0);
    ~Widget();
private:
    QPushButton * b1;       //两种方式创建按钮
    QPushButton b2;
    child w;                //子窗口
public:
    void change_win();      //切换窗口(爸爸切换到儿子)
    void change_text();     //切换按钮文字
    void change();          //从儿子那里切回来
};

#endif // WIDGET_H

widget.cpp

#include "widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    b1 = new QPushButton("找儿子",this);
    this->setWindowTitle("我是爸爸");
    resize(500, 500);
    b1->move(250,250);
    b2.setParent(this);
    b2.setText("点我!");
    b2.resize(100,20);
    //点击b1切换窗口
    connect(b1, QPushButton::clicked, this, Widget::change_win);
    //点击b2改变按钮文字
    connect(&b2, QPushButton::clicked, this, Widget::change_text);
    //接收子窗口传来的信号,然后调用change函数
    connect(&w,child::mysignal,this,Widget::change);

}

Widget::~Widget()
{

}

void Widget::change_win()
{
    this->hide();
    w.show();
}

void Widget::change_text()
{
    b2.setText("你是^(ˉ(∞)ˉ)^");
}

void Widget::change()
{
    w.hide();
    this->show();
}

第二个窗口:child.h

#ifndef CHILD_H
#define CHILD_H

#include <QWidget>
#include<QPushButton>

class child : public QWidget
{
    Q_OBJECT
private:
    QPushButton *b3;
public:
    explicit child(QWidget *parent = nullptr);


signals:
    void mysignal();    //要发出去的信号
public slots:
    void myslot();      //槽函数
};

#endif // CHILD_H

child.cpp

#include "child.h"

child::child(QWidget *parent) : QWidget(parent)
{
    b3 = new QPushButton("叫爸爸",this);
    this->setWindowTitle("我是儿子");
    resize(500,500);
    b3->move(250,250);
    //点击按钮找爸爸~
    connect(b3, QPushButton::clicked, this, child::myslot);
}

void child::myslot()
{
    emit mysignal();    //向爸爸发射信号
}

主函数:main.cpp

#include "widget.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();

    return a.exec();
}

运行结果:点击“找儿子”切换窗口并隐藏自己。点击“叫爸爸”切换回来。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值