当前位置:网站首页>QT页面跳转的实现
QT页面跳转的实现
2022-08-09 15:02:00 【翔在天上飞】
目录
目标
通过程序QT程序设计实现页面跳转
背景案例
例如,我们在用QT做登录界面的时候,在验证完账号密码后需要实现一个页面的跳转,实现从登录界面到主窗口界面的跳转
背景阐述
现有myAPP和mylogin、mainw这三个类,并由myAPP这个类对mylogin和mainw这两个类进行统筹调度
实现思路
首先,我们是通过自定义的信号和槽函数,实现页面的跳转,自定义的信号,可以在其他的类中接收到该信号,并根据是否接收到该信号进行判断是否进行页面的切换显示,显示另一个界面
借助上面提到的例子,详细展开理解,现有一个页面mylogin和页面mainw,我们需要在页面mylogin中自定义一个信号,并且在页面mylogin中通过合适的方式,将这个信号用emit函数,发出
然后在myAPP这个总调度类实例化的对象中我们就可以接收到这个信号,接着,通过这个信号,在myapp这个总调度类中,使用connect函数连接一个槽,在槽函数中实现页面mainw的显示,这样就可以实现一个页面跳转,主要还是通过一个可以跨越类的信号来实现的。
实现原理

主要代码展示
1.mylogin类
mylogin.h中
signals:
void sig_login(QString usrname, QString usrpass);
public slots:
void do_login();在mylogin这个类中,定义一个信号和一个槽函数
mylogin.cpp中
mylogin::mylogin(QWidget *parent)
: QDialog(parent)
{
this->init_ui();
connect(this->bnt_login, &QPushButton::clicked, this, &mylogin::do_login);
}
void mylogin::do_login()
{
emit sig_login(usr_name_le->text(), usr_pass_le->text());
}通过按键,靠外界触发一个按键被按下的信号,然后传递给do_login()这个先前自己定义的槽函数, 在do_login()槽函数中具体实现对自定义信号sig_login()的发送,用到emit这个发送方法。
2.myapp类
myapp.h
public slots:
void do_log(QString usrname, QString usrpass);在myapp这个总调度的类中,设置一个槽函数,用于接收来自mylogin类中的信号,并实现对界面mainw的开启显示。
myapp.cpp
myapp::myapp(QObject *parent) : QObject(parent)
{
this->login = new mylogin();
this->login->show();
connect(this->login, &mylogin::sig_login, this, &myapp::do_log);
}
void myapp::do_log(QString usrname, QString usrpass)
{
if(usrname == "Jack" && usrpass == "123456")
{
this->mainw->show();
this->login->close();
}
}所有信号的发送都是需要实例化的对象来完成的,所以需要new一个mylogin对象,并通过connect函数建立mylogin对象和myAP对象的联系,信号是由mylogin对象发送出的,接收者是do_log这个在myapp中自定义的槽函数,并在槽函数中我们进一步实现对,mainw这个主界面的显示。
总结
本文主要利用信号和槽,通过信号建立各个类之间的联系,实现类与类之间的通信,如果对connect等函数还不是很熟悉的朋友,建议先学习一下函数用法,本文主要提供一种思路。当然,做法可能不止一种,我只是给出一种我的理解和做法,有不对的地方欢迎指正。
边栏推荐
猜你喜欢

架构实战营第九模块作业-毕业项目

Basic Concepts of Software Security
![[Paper reading] LIME: Low-light Image Enhancement via Illumination Map Estimation (the most complete notes)](/img/ca/6c8939fd752cc8928c2ffce0b090ed.png)
[Paper reading] LIME: Low-light Image Enhancement via Illumination Map Estimation (the most complete notes)

unity3d画布/UI自适应屏幕的方式

TCP/IP协议组——完整工作过程分析

Unity UI框架思路与实现

堆(heap)系列_0x03:堆块 + malloc/new底层 + LFH(WinDbg分析)

qemu虚拟机模拟固件环境搭建

Vim实用技巧_7.模式匹配和查找

Correlation analysis
随机推荐
模糊综合评价
Vim实用技巧_4.管理多个文件(打开 + 切分 + 保存 + netrw)
Excel绘制统计图
Unity Shader 透视效果/XRay
matlab讲解与使用【持续更新中ing】
堆(heap)系列_0x04:堆的内部结构(_HEAP=_HEAP_SEGMENT+_HEAP_ENTRY)
PE格式系列_0x05:输出表和重定位表(.reloc)
新电脑自带win11,开机怎样跳过连网
软件安全内存区域详解
【Postgraduate Work Weekly】(The third week)
GStreamer应用开发手册学习笔记之二
堆(heap)系列_0x08:NT堆调试支持_立刻发现调试支持(DPH)
go使用Consul实用指南
爬虫实战 某问答网站乎
RTP协议封装音视频媒体数据详解
Word 2016 撰写论文(1): 公式居中、编号右对齐
The practical skills Vim _1. Vim way of solving problems
CTF online encryption and decryption and common tools
Introduction to common commands in SQLMap
蒙特卡罗 Monte Carlo 模拟