情景导入

当我们在做应用时,一般都会遇到需要跳转页面的情况,按下一个按钮,跳转到对应的功能界面 ;或者需要进行角色选择,选择不同的角色,进入不同的界面。

今天就用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-按下按钮实现页面跳转相关推荐

  1. 微信小程序—点击按钮实现页面跳转

    按钮button标签通过bindtap属性绑定点击事件实现页面跳转. //wxml示例代码 <button bindtap="gotoPage">按钮</butt ...

  2. 点下按钮后自动跳转html代码,js实现网页跳转脚本

    为什么要写这个脚本 生活中很多时候会经常登录一个论坛或者网页 但是每次打开浏览器都要输一遍网址,或者点开收藏的书签 这样远远不如在桌面上打开文件点两下快,还能装X,多好 前提条件 需要会一些基础的ht ...

  3. java 按钮跳转页面_java按钮实现页面跳转 | 学步园

    假如有两个frame,分别为frame1,frame2,frame1加个按钮实现跳转.frame1代码如下 import java.awt.event.ActionEvent; import java ...

  4. java swing界面跳转_java按钮实现页面跳转

    假如有两个frame,分别为frame1,frame2,frame1加个按钮实现跳转.frame1代码如下 import java.awt.event.ActionEvent; import java ...

  5. html页面点击按钮实现页面跳转

    方法1.在button标签外嵌套一个a标签,利用超链接进行跳转: <a href="https://www.baidu.com/" target="_blank&q ...

  6. IE下按钮超链接无法跳转

    a标签中如果有button, 那么在IE下就不能跳转到herf的链接,而火狐和google中可以 下面这种则在IE,火狐,google中都可以 <input type="button& ...

  7. jsp 中实现点击按钮 实现页面跳转到HTML

    <input type ="button" value="跳转" οnclick="window.location.href='main.htm ...

  8. 安卓之页面跳转与传值和按钮事件

    一:新建页面 即新建Activity,new-other-Android Activity,next, 新建Activity的时候, 1:eclipse会自动创建Layout,我们发现Layout目录 ...

  9. android中怎么实现点击按钮进行页面的跳转

    第一步:先创建好两个Activity.如图 (PS:是创建Activity,不是创建java类.右击包名,找到new-->other-->android-->AndroidActiv ...

最新文章

  1. 图形数据库Neo4j基本了解
  2. ACMMM2017 | 电子科大斩获最佳论文!中科院自动化所多媒体计算组获得IEEE期刊最佳论文!
  3. jQuery 9 相对选择器
  4. Mybatis中@Param的用法和作用
  5. unity获取ugui上鼠标位置
  6. 代码中findOne方法找不到
  7. Spring Boot基础学习笔记15:实现文件下载功能
  8. 同步带轮介绍_Synchroflex丨红色GENIII同步带丨Mulco
  9. int main():声明指定了两个以上的数据类型
  10. 最新 android 机型,安卓11支持哪些机型,Android11适配机型一览
  11. 2022-8-4用GPS模块和Arduino制作一个多功能车辆测速仪
  12. 杭州邮政编码一览表|杭州邮编|杭州邮编查询
  13. 2019电赛巡线机器人总结
  14. Linux下安装SVN服务(CentOS7下)单仓库版(老威改良版)
  15. 四川大学网络教育计算机应用基础,四川大学网络教育学院《计算机应用基础》第一次作业...
  16. 2022年全球与中国POS终端市场现状及未来发展趋势
  17. 数据库原理(八)- 关系代数
  18. PyCharm激活记录
  19. win10开机右下角网络图标突然变成小地球,显示无internet连接,但是可以正常上网
  20. Oracle导出报错: unknown command beginning “exp SCOTT/...“ - rest of line ignored.

热门文章

  1. 中国智能制造系统架构(IMSA模型)
  2. 读取存储《哈姆雷特》英文剧本的文件,分析统计其中单词出现的频率,实现以下结果:给出前10个人物出现的次数使用turtle模块绘制词频统计结果;使用wordcloud库会出词云图;
  3. Python基础——第二章 第一部分 字符串方法 转义及编码解码
  4. Google账户两步验证的工作原理【转】
  5. GitHub 上标星 115k+ 的 Java 教程
  6. gazebo 直接获取传感器数据_基于uFUN开发板的心率计(一)DMA方式获取传感器数据...
  7. .flo光流文件转换为png图片
  8. 中国航班杂志中国航班杂志社中国航班编辑部2022年第18期目录
  9. 配置别名 配置alias
  10. 怎样防止数据怎么泄露了