QT-按下按钮实现页面跳转
情景导入
当我们在做应用时,一般都会遇到需要跳转页面的情况,按下一个按钮,跳转到对应的功能界面 ;或者需要进行角色选择,选择不同的角色,进入不同的界面。
今天就用QT简单实现一下上述内容
内容描述
(1)设计三个界面:主界面、用户界面、管理员界面
(2)主界面描述:一个下拉框,实现角色的选择,一个登录按钮,点击后跳转到对应的界面
(3)管理员界面:一个返回按钮,点击后返回主界面
(4)用户界面 :一个返回按钮,点击后返回主界面
效果图
(1)主界面
(2)选择角色 -->管理员,并登录
(点击返回可返回主界面)
(3)选择角色 -->用户,并登录
(点击返回可返回主界面)
代码附录
代码中都写了详细注释
(1)代码树结构
(2)头文件
myapp.h
#ifndef MYAPP_H
#define MYAPP_H#include <QMainWindow>QT_BEGIN_NAMESPACE
namespace Ui { class MyApp; }
QT_END_NAMESPACEclass MyApp : public QMainWindow
{Q_OBJECTpublic:MyApp(QWidget *parent = nullptr);~MyApp();private:Ui::MyApp *ui;void comboBox_display();private slots:void on_pushButton_clicked();void Show_Main_Page();void on_comboBox_currentTextChanged(const QString &arg1);void Switch_Role();signals:void main_page();void admin_page();void user_page();void mesg_switch();};
#endif // MYAPP_H
myadmin.h
#ifndef MYADMIN_H
#define MYADMIN_H#include <QDialog>
namespace Ui {
class MyAdmin;
}
class MyAdmin : public QDialog
{Q_OBJECTpublic:explicit MyAdmin(QWidget *parent = 0);~MyAdmin();private slots:void on_pushButton_clicked();//与login关联的槽函数void show_admin_page();
signals:void show_main_page();//显示主窗口信号void quit();//退出信号
private:Ui::MyAdmin *ui;
};
#endif // MYADMIN_H
myuser.h
#ifndef MYUSER_H
#define MYUSER_H#include <QDialog>namespace Ui {
class MyUser;
}class MyUser : public QDialog
{Q_OBJECTpublic:explicit MyUser(QWidget *parent = nullptr);~MyUser();private:Ui::MyUser *ui;
private slots:void Show_User_Page();void on_pushButton_clicked();
signals:void show_main_page();
};#endif // MYUSER_H
(3)cpp源文件
main.cpp
/********************* Author:Easadon* Date :2020.9.4
********************/#include "myapp.h"
#include "myadmin.h"
#include "myuser.h"
#include <QApplication>
#include <string.h>
#include <QDebug>//声明在外部定义好的全局变量Mesg
extern QString Mesg;int main(int argc, char *argv[])
{QApplication a(argc, argv);MyApp mainpage;MyAdmin adminpage;MyUser userpage;mainpage.setWindowTitle("智慧生活");mainpage.setFixedSize(480,750);mainpage.show();adminpage.setFixedSize(480,750);adminpage.setWindowTitle("管理员界面");userpage.setFixedSize(480,750);userpage.setWindowTitle("用户界面");//按下管理员界面的按钮,返回主界面QObject::connect(&adminpage, SIGNAL(show_main_page()),&mainpage,SLOT(Show_Main_Page()));//按下用户界面的按钮,返回主界面QObject::connect(&userpage, SIGNAL(show_main_page()),&mainpage,SLOT(Show_Main_Page()));//获取下拉框的角色信息QObject::connect(&mainpage, SIGNAL(main_page()),&mainpage,SLOT(Switch_Role()));//选择管理员角色,点击登录按钮,跳转到管理员界面QObject::connect(&mainpage,SIGNAL(admin_page()),&adminpage,SLOT(show_admin_page()));//选择用户角色,点击登录按钮,跳转到用户界面QObject::connect(&mainpage,SIGNAL(user_page()),&userpage,SLOT(Show_User_Page()));return a.exec();
}
myapp.cpp
/********************* Author:Easadon* Date :2020.9.4
********************/
#include "myapp.h"
#include "ui_myapp.h"
#include "myadmin.h"
#include "myuser.h"
#include <QDebug>//全局变量,保存下拉框所选择的文本信息
QString Mesg;/******************主界面构造函数******************** (1)显示下拉框组件* (2)连接下拉框文本变化的信号与对应槽* (3)检测到下拉框所选择的文本发生变化,触发槽函数,* 将当前选择的文本赋值给全局变量Mesg
*************************************************/
MyApp::MyApp(QWidget *parent): QMainWindow(parent), ui(new Ui::MyApp)
{ui->setupUi(this);comboBox_display();connect(ui->comboBox,SIGNAL(currentTextChanged(const QString)),this,SLOT(on_comboBox_currentTextChanged(const QString)));
}MyApp::~MyApp()
{delete ui;
}/************下拉框显示函数******************* (1)插入要进行选择的文本(管理员、用户)* (2)设置图标、文本格式* (3)这里不采用槽,直接使用普通函数即可
******************************************/
void MyApp::comboBox_display()
{QStringList Number;QIcon icon0,icon1;QFont font("Microsoft Yahei",15,20);ui -> comboBox -> clear();ui->comboBox->addItem(QString::asprintf("选择角色"));icon0.addFile("E:/QT/myproject/MyApp/MyApp/icon/admin.png");icon1.addFile("E:/QT/myproject/MyApp/MyApp/icon/user.png");ui->comboBox->addItem(icon0,QString::asprintf("管理员"));ui->comboBox->addItem(icon1,QString::asprintf("用户"));ui->comboBox-> setFont(font);
}//显示主界面
void MyApp::Show_Main_Page()
{this -> show();
}/*********主界面登录按钮槽函数*********** 登录按钮被按下,发送 main_page()信号
***********************************/
void MyApp::on_pushButton_clicked()
{this ->hide();emit main_page();
}/********下拉框槽函数********** 下拉框选择文本发生变化时触发* 将当前文本赋值给Mesg
***************************/
void MyApp::on_comboBox_currentTextChanged(const QString &arg1)
{Mesg = arg1;qDebug() << Mesg;
}/************角色选择槽函数************** 切换角色时,发送对应的信号确定跳转的页面
*************************************/
void MyApp::Switch_Role()
{if(Mesg == "管理员"){emit admin_page();}else if(Mesg == "用户"){emit user_page();}
}
myadmin.cpp
/********************* Author:Easadon* Date :2020.9.4
********************/
#include "myadmin.h"
#include "ui_myadmin.h"
#include<QHBoxLayout>
#include "myapp.h"MyAdmin::MyAdmin(QWidget *parent) :QDialog(parent),ui(new Ui::MyAdmin)
{ui->setupUi(this);}MyAdmin::~MyAdmin()
{delete ui;
}void MyAdmin::on_pushButton_clicked()
{this->hide();//隐藏登录对话框emit show_main_page();//显示主窗口
}void MyAdmin::show_admin_page()
{this -> show();
}
myuser.cpp
/********************* Author:Easadon* Date :2020.9.4
********************/#include "myuser.h"
#include "ui_myuser.h"MyUser::MyUser(QWidget *parent) :QDialog(parent),ui(new Ui::MyUser)
{ui->setupUi(this);
}MyUser::~MyUser()
{delete ui;
}//显示用户界面
void MyUser::Show_User_Page()
{this -> show();}void MyUser::on_pushButton_clicked()
{this->hide();//隐藏登录对话框emit show_main_page();//显示主窗口
}
(4)组件
用到comboBox、PushButton等组件,自行创建即可
告辞
QT-按下按钮实现页面跳转相关推荐
- 微信小程序—点击按钮实现页面跳转
按钮button标签通过bindtap属性绑定点击事件实现页面跳转. //wxml示例代码 <button bindtap="gotoPage">按钮</butt ...
- 点下按钮后自动跳转html代码,js实现网页跳转脚本
为什么要写这个脚本 生活中很多时候会经常登录一个论坛或者网页 但是每次打开浏览器都要输一遍网址,或者点开收藏的书签 这样远远不如在桌面上打开文件点两下快,还能装X,多好 前提条件 需要会一些基础的ht ...
- java 按钮跳转页面_java按钮实现页面跳转 | 学步园
假如有两个frame,分别为frame1,frame2,frame1加个按钮实现跳转.frame1代码如下 import java.awt.event.ActionEvent; import java ...
- java swing界面跳转_java按钮实现页面跳转
假如有两个frame,分别为frame1,frame2,frame1加个按钮实现跳转.frame1代码如下 import java.awt.event.ActionEvent; import java ...
- html页面点击按钮实现页面跳转
方法1.在button标签外嵌套一个a标签,利用超链接进行跳转: <a href="https://www.baidu.com/" target="_blank&q ...
- IE下按钮超链接无法跳转
a标签中如果有button, 那么在IE下就不能跳转到herf的链接,而火狐和google中可以 下面这种则在IE,火狐,google中都可以 <input type="button& ...
- jsp 中实现点击按钮 实现页面跳转到HTML
<input type ="button" value="跳转" οnclick="window.location.href='main.htm ...
- 安卓之页面跳转与传值和按钮事件
一:新建页面 即新建Activity,new-other-Android Activity,next, 新建Activity的时候, 1:eclipse会自动创建Layout,我们发现Layout目录 ...
- android中怎么实现点击按钮进行页面的跳转
第一步:先创建好两个Activity.如图 (PS:是创建Activity,不是创建java类.右击包名,找到new-->other-->android-->AndroidActiv ...
最新文章
- 图形数据库Neo4j基本了解
- ACMMM2017 | 电子科大斩获最佳论文!中科院自动化所多媒体计算组获得IEEE期刊最佳论文!
- jQuery 9 相对选择器
- Mybatis中@Param的用法和作用
- unity获取ugui上鼠标位置
- 代码中findOne方法找不到
- Spring Boot基础学习笔记15:实现文件下载功能
- 同步带轮介绍_Synchroflex丨红色GENIII同步带丨Mulco
- int main():声明指定了两个以上的数据类型
- 最新 android 机型,安卓11支持哪些机型,Android11适配机型一览
- 2022-8-4用GPS模块和Arduino制作一个多功能车辆测速仪
- 杭州邮政编码一览表|杭州邮编|杭州邮编查询
- 2019电赛巡线机器人总结
- Linux下安装SVN服务(CentOS7下)单仓库版(老威改良版)
- 四川大学网络教育计算机应用基础,四川大学网络教育学院《计算机应用基础》第一次作业...
- 2022年全球与中国POS终端市场现状及未来发展趋势
- 数据库原理(八)- 关系代数
- PyCharm激活记录
- win10开机右下角网络图标突然变成小地球,显示无internet连接,但是可以正常上网
- Oracle导出报错: unknown command beginning “exp SCOTT/...“ - rest of line ignored.
热门文章
- 中国智能制造系统架构(IMSA模型)
- 读取存储《哈姆雷特》英文剧本的文件,分析统计其中单词出现的频率,实现以下结果:给出前10个人物出现的次数使用turtle模块绘制词频统计结果;使用wordcloud库会出词云图;
- Python基础——第二章 第一部分 字符串方法 转义及编码解码
- Google账户两步验证的工作原理【转】
- GitHub 上标星 115k+ 的 Java 教程
- gazebo 直接获取传感器数据_基于uFUN开发板的心率计(一)DMA方式获取传感器数据...
- .flo光流文件转换为png图片
- 中国航班杂志中国航班杂志社中国航班编辑部2022年第18期目录
- 配置别名 配置alias
- 怎样防止数据怎么泄露了