首页 > 其他分享 >Qt 多窗体

Qt 多窗体

时间:2024-04-10 21:04:15浏览次数:22  
标签:界面 Qt 登录 ui QMessageBox 窗体 单击 clicked

前言

        在 Qt编程中经常会遇到要在多个界面之间切换的情况,如从登录界面跳转到主界面,从主界面跳转到设置界面,再返回到主界面。我们将会用一个简单的示例来实现多窗体功能。


登录窗口

        创建基类为QMainWindow,类名为LoginWin。再使用ui界面设计。

        将密码框不显示出来。

        再右键单击按钮进行跳转槽函数编辑:

void loginwin::on_login_button_clicked()
{
    QString user = "root";
    QString password = "123456";
    if((ui->userline->text() == user)&&(ui->passwordline->text() == password)){
        QMessageBox::about(this,"成功","登录成功");
    }else{
        QMessageBox::critical(this,"失败","输入有误",QMessageBox::Ok,QMessageBox::NoButton);
    }
}

        在以后的介绍中,校准用户名和密码的过程会再数据库里面校对。 现在我们拥有了登录界面,还差系统界面。


系统界面

        我们在原来项目里面添加:

         在选择模板类的时候选择MainWindow。并且在ui设计界面

        登录界面 loginwin.cpp 修改部分代码,在登录按钮对应的槽函数中创建主界面对象并显示主界面即可。主界面显示出来后登录界面就可以销毁了。创建的时候注意主界面要单独创建,不能与登录界面有关联。主要代码如下(注意添加头文件 )。

void loginwin::on_login_button_clicked()
{
    QString user = "root";
    QString password = "123456";
    if((ui->userline->text() == user)&&(ui->passwordline->text() == password)){
        //如果正确则跳转至主界面
        MainWindow *win=new MainWindow;
        win->show();
        this->close();
        //这里不能使用delete,因为this是主函数中创建的栈空间,系统会自动释放
    }else
        QMessageBox::critical(this,"失败","输入有误",QMessageBox::Ok,QMessageBox::NoButton);
}

        跳转到主界面,单击主界面“退出”按钮的时候返回到登录界面)这种操作不是经常性操作,所以开始登录的时候已经关闭窗口了,那么现在要让登录界面显示就要重新创建一个界面)。在mainwindow.ui中单击“退出登录”按钮,单击鼠标右键,在弹出的快捷菜单中选择“转到槽”,设置 clicked()信号的槽函数,代码如下(注意添加头文件,包含其他窗体)。

void MainWindow::on_quit_button_clicked()
{
    loginwin *win=new loginwin;
    win->show();
    delete this;
    //此时就可以用delete
}

        由主界面跳转到设置界面:在 mainwindow.ui中选择“设置”按钮,单击鼠标右键,在弹出的快捷菜单中选择“转到槽”,设置 clicked()信号的槽函数,代码如下。(此时又添加也setwin类界面)

void MainWindow::on_edit_button_clicked()
{
    // 创建设置界面,并且把 this 传入设置界面用于后面的返回
    // 注意 MainWindow、SetWin 窗口的界面在设计的时候选择 MainWindow 界面模板设计实现
    setWin *win = new setWin(this);
    win->show();
    this->hide();// 主界面隐藏(后期直接可以显示)
}

        再从设置界面返回主界面:在 setwin.ui中单击“返回主窗口”按钮,单击鼠标右键,在弹出的快捷菜单中选择“转到槽”,设置 clicked() 信号的槽函数,代码如下。

void setWin::on_back_button_clicked()
{
    this->parentWidget()->show();
    delete this;// 释放设置界面
}

        结果:

 


        这个简单的例子就把多窗体功能演示了一遍,其实后面的父窗口hide(),也可以在前面的代码中使用!

标签:界面,Qt,登录,ui,QMessageBox,窗体,单击,clicked
From: https://blog.csdn.net/atomy_iiii/article/details/137609260

相关文章

  • Qt 对话框常见类型
    前言        对话框是GUI程序设计中不可或缺的组成部分,很多不能或者不适合放入主窗口的功能组件都必须放在对话框中。        Qt使用QDialog类实现对话框,通常会设计一个类继承QDialog类。QDialog类(及其派生类,以及所有Qt:Dialog类型的类)对其parent......
  • 【QT入门】Qt自定义控件与样式设计之QPushButton常用qss
    往期回顾【QT入门】Qt自定义控件与样式设计之qss介绍(Qtstylesheet)-CSDN博客【QT入门】Qt自定义控件与样式设计之qss选择器-CSDN博客【QT入门】Qt自定义控件与样式设计之QLineEdit的qss使用-CSDN博客 【QT入门】Qt自定义控件与样式设计之QPushButton常用qss这里我......
  • 【QT入门】 Qt自定义控件与样式设计之QCheckBox qss实现按钮开关
    往期回顾【QT入门】Qt自定义控件与样式设计之QPushButton常用qss-CSDN博客【QT入门】Qt自定义控件与样式设计之QPushButton实现鼠标悬浮按钮弹出对话框-CSDN博客【QT入门】Qt自定义控件与样式设计之QComboBox样式表介绍-CSDN博客 【QT入门】Qt自定义控件与样式设计之......
  • Qt使用Sqlite数据库-2
        上一篇文章介绍了sqlite数据库在Qt中基本使用方法(链接:Qt使用Sqlite数据库-1(入门级)-CSDN博客)。今天继续学习数据库常用的语法。1.删除数据库内容voiddeleteData(){QStringSql;//拼接sql语句Sql="DELETEFROMPerson_TableWHEREName='张......
  • MQTT协议特点及数据包结构详解(值得珍藏)
    点击下载《MQTT协议特点及数据包结构详解(值得珍藏)》1.前言MQTT(MessageQueuingTelemetryTransport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的“轻量级”通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。MQTT最大优点在于,用极少的代码和有......
  • python收到MQTT消息后再发http请求
    python收MQTT消息和 发http请求的代码在前面的文章都有介绍,这里直接上完整的功能代码mqtt2http.py#python3.6importloggingimportrandomimporttimeimportrequests#frompaho.mqttimportclientasmqtt_clientimportpaho.mqtt.clientasmqttBROKER='......
  • python收到MQTT消息后写入mySQL
    python收MQTT消息和写mySQL的代码在前面的文章都有介绍,这里直接上完整的功能代码mqtt2mysql.py#python3.6importloggingimportrandomimporttimeimportmysql.connector#frompaho.mqttimportclientasmqtt_clientimportpaho.mqtt.clientasmqttBROKER......
  • Qt QCharts绘制柱状图,柱高和y轴数据刻度不匹配
    QCharts绘制柱状图,柱高和y轴数据刻度不匹配1//在项目pro文件中添加以下内容2QT+=charts34//在.h文件中添加以下内容,注意:需要将头文件及命名空间添加到ui命名空间之前,否则将提示错误5#include<QtCharts/QChartView>6#include<QtCharts/QBarSerie......
  • Qt - Qt Creator下载与安装
    一、QtCreator简介Qt是一个跨平台应用开发框架。QtCreator是一个跨平台的集成开发环境(IDE),集成了Qt所提供的功能,可以单独下载使用,也可以结合Qt组合使用。二、QtCreator下载下载地址:https://download.qt.io/archive/(1)进入下载界面后,选择下qt文件夹,或者qtcreator文件夹。(2......
  • python写的收Udp消息后,再发到 MQTT 的例子
    收到Udp消息后,再发到MQTT的例子完整代码udp2mqtt.pyimportjsonimportloggingimportrandomimportsocketimporttimeimportpaho.mqtt.clientasmqtt_clientBROKER='*******.ala.cn-hangzhou.emqxsl.cn'PORT=8084TOPIC="python-mqtt/wss"CLIEN......