9.22 QT作业

news2025/1/12 18:10:10

widget.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
 
#include <QMainWindow>
#include <QMessageBox>
#include <QDebug>
#include "second.h"  //第二个界面头文件
#include "third.h"  //注册界面头文件
 
#include <QSqlDatabase>          //数据库管理类
#include <QSqlQuery>              //执行sql语句的类
#include <QSqlRecord>              //数据库记录的类
#include <QMessageBox>
 
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
 
class MainWindow : public QMainWindow
{
    Q_OBJECT
 
public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
 
signals:
    void jump();           //自定义跳转信号函数
 
    void jump2();           //自定义跳转信号函数
 
public:
    void jump_slot3();  //自定义跳转函数(注册页面)
 
private slots:
 
    void on_pushButton_clicked();
 
    void on_pushButton_2_clicked();
 
    void on_pushButton_3_clicked();
 
private:
    Ui::MainWindow *ui;
 
    Second *s1;  //定义另一个界面的指针
 
    third *t1;  //定义注册页面的指针
 
    QSqlDatabase db;  //定义一个数据库的类
};
#endif // MAINWINDOW_H

widget.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
 
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
 
    ui->label->setPixmap(QPixmap("D:\\QTtupian\\jimoaqing.gif"));
    ui->label->setScaledContents(true);
 
    //账号图标
    ui->label_2->setPixmap(QPixmap("D:\\QTtupian\\zhanghao.jpg"));
    ui->label_2->setScaledContents(true);
    //密码图标
    ui->label_3->setPixmap(QPixmap("D:\\QTtupian\\mima.jpg"));
    ui->label_3->setScaledContents(true);
 
    s1 = new Second;  //给另一个界面实例化空间
    t1 = new third;   //给注册页面实例化空间
 
    //将当前界面的信号,与s1界面的槽函数进行连接
    connect(this,&MainWindow::jump, s1, &Second::jump_slot); //连接聊天室
    connect(this,&MainWindow::jump2, t1, &third::jump_slot2);  //连接注册
    connect(t1,&third::jump3, this, &MainWindow::jump_slot3);  //从注册跳回
    /********************************************************/
 
    //判断自己的数据库对象中,是否包含了要处理的数据库
    if(!db.contains("zhanghu.db"))
    {
        db = QSqlDatabase::addDatabase("QSQLITE");  //参数为驱动类型
 
        //设置数据库的名字
        db.setDatabaseName("zhanghu.db");
    }
    //此时已经有一个名为zhanghu.db的数据库
 
    //打开数据库
    if(!db.open())
    {
        QMessageBox::information(this,"失败","数据库打开失败");
        return ;
    }
    //zhanghu_info
}
 
MainWindow::~MainWindow()
{
    delete ui;
}
 
//注册按钮对应槽函数
void MainWindow::on_pushButton_3_clicked()
{
    emit jump2();  //发送跳转函数
 
    this->hide();  //将当前页面隐藏
}
 
//自定义跳转函数
void MainWindow::jump_slot3()
{
    this->show();
}
 
//登录按钮对应槽函数
void MainWindow::on_pushButton_clicked()
{
    //准备sql语句
    QString sql = "select * from zhanghu_info";
 
    //准备语句执行者
    QSqlQuery querry;
 
    //执行sql语句
    if(!querry.exec(sql))
    {
        QMessageBox::information(this,"提示","显示失败");
        return ;
    }
 
    int i=0;  //记录行数
    QString Z;  //记录账号
    QString M;  //记录密码
    while(querry.next())
    {
        //遍历每条记录中的每一项内容
        for(int j=0;j<querry.record().count();j++)  //其中count为每一行数据的个数
        {
 
            if(ui->lineEdit->text()==querry.record().value(j).toString()&&
                    ui->lineEdit_2->text()==querry.record().value(j+1).toString())
            {
                Z = querry.record().value(j).toString();
                M = querry.record().value(j+1).toString();
            }
        }
 
        i++;
    }
 
    //判断输入的账号密码是否与数据库表中已注册的账号密码一致
    if(ui->lineEdit->text()==Z&&ui->lineEdit_2->text()==M)
    {
        //信息对话框
        QMessageBox box(QMessageBox::Question,"成功","登录成功",
                        QMessageBox::Ok,this);
        box.setDefaultButton(QMessageBox::Ok);  //默认到ok上
 
        int ret = box.exec();  //运行对话框
        if(ret == QMessageBox::Ok)
        {
            emit jump();  //发送跳转信息
 
            this->hide(); //将当前界面隐藏
        }
    }
    else
    {
        //错误对话框
        QMessageBox box(QMessageBox::Question,"错误","账号密码不匹配,是否重新登录",
                        QMessageBox::Ok|QMessageBox::Cancel,this);
        box.setDefaultButton(QMessageBox::Ok);  //默认到ok上
        int ret = box.exec();  //运行对话框
        switch(ret)
        {
        case QMessageBox::Ok:
            ui->lineEdit->clear();  //清楚账号密码内容
            ui->lineEdit_2->clear();
            break;
        case QMessageBox::Cancel:
            //ret=box.close();
            break;
        }
    }
 
}
 
//退出按钮对应槽函数
void MainWindow::on_pushButton_2_clicked()
{
    //问题对话框
    int ret = QMessageBox::question(this,"问题","是否确定要退出登录",
                                    QMessageBox::Yes|QMessageBox::No,
                                    QMessageBox::No);
 
    switch(ret)
    {
        case QMessageBox::Yes:
            this->close();  //关闭窗口
            break;
        case QMessageBox::No:
            break;
    }
}

main.cpp

#include "mainwindow.h"
 
#include <QApplication>
 
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    return a.exec();
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1030221.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于TensorFlow+CNN+协同过滤算法的智能电影推荐系统——深度学习算法应用(含微信小程序、ipynb工程源码)+MovieLens数据集(一)

目录 前言总体设计系统整体结构图系统流程图 运行环境Python环境TensorFlow环境方法一方法二 后端服务器Django环境配置微信小程序环境 相关其它博客工程源代码下载其它资料下载 前言 本项目专注于MovieLens数据集&#xff0c;并采用TensorFlow中的2D文本卷积网络模型。它结合…

软件设计师笔记系列(三)

&#x1f600;前言 随着计算机技术的日益发展&#xff0c;操作系统作为计算机系统的核心组件&#xff0c;其重要性不言而喻。操作系统不仅管理和控制计算机硬件和软件资源&#xff0c;还为用户和其他软件提供服务&#xff0c;使得复杂的计算机系统能够高效、安全和方便地运行。…

网络监控应用程序

在过去的几十年中&#xff0c;网络监控应用稳步发展&#xff0c;以适应不断变化的市场需求和期望。多年来&#xff0c;停机成本飙升&#xff0c;客户对停机的耐心比以往任何时候都低&#xff0c;不仅仅是正常运行时间&#xff0c;正常运行时间的质量也变得很重要。 另一个发展…

使用QLoRA对Llama 2进行微调的详细笔记

使用QLoRA对Llama 2进行微调是我们常用的一个方法&#xff0c;但是在微调时会遇到各种各样的问题&#xff0c;所以在本文中&#xff0c;将尝试以详细注释的方式给出一些常见问题的答案。这些问题是特定于代码的&#xff0c;大多数注释都是针对所涉及的开源库以及所使用的方法和…

Vue之vue-cli搭建SPA项目

目录 ​编辑 前言 一、vue-cli简介 1. 什么是vue-cli 2. vue-cli的重要性 3. vue-cli的应用场景 二、Vue-cli搭建SPA项目 1. 构建前提&#xff08;node.js安装完成&#xff09; 2. 安装vue-cli 3. 使用脚手架vue-cli(2.X版)来构建项目 4. 分析创建spa项目的八个问题 …

康耐视Visionpro-单ToolBlock工具规范与脚本测量规范案例分享

目录 项目要求:测试红框内的宽度显示效果第一步:建立变量第二步:建立命名空间第三步:初始化和关联工具第四步:业务逻辑和标签建立第五步:图层添加标签全部代码项目要求:测试红框内的宽度 显示效果 使用工具输入输出变量解析: 变量分析:变量Select1强制此ToolBLock输出…

2022年贵州省职业院校技能大赛中职组网络安全赛项规程

2022年贵州省职业院校技能大赛中职组 网络安全赛项规程 一、赛项名称 赛项名称&#xff1a;网络安全 赛项归属&#xff1a; 信息技术类 二、竞赛目的 为检验中职学校网络信息安全人才培养成效&#xff0c;促进网络信息安全专业教学改革&#xff0c;培养大批既满足国家网络…

Ubuntu上通过源码方式安装Redis

上一篇文章Ubuntu上安装、使用Redis的详细教程已经介绍了再Ubuntu操作系统上安装Redis的详细过程&#xff0c;但是因为安装的Redis只有最主要的配置文件和redis-server&#xff0c;为了更深入地学习Redis和进行更复杂的操作&#xff0c;需要安装一个完整的Redis服务。 这篇文章…

【Windows Server 2012 R2搭建FTP站点】

打开服务器管理器——添加角色和功能 下一步 下一步 下一步 选择FTP服务器&#xff0c;勾上FTP服务和FTP扩展&#xff0c;点击下一步 安装 安装完成关闭 打开我们的IIS服务器 在WIN-XXX主页可以看到我们的FTP相关菜单 右键WIN-XXXX主页&#xff0c;添加FTP站点 输入站点名称-FT…

Redis实现Session持久化

Redis实现Session持久化 1. 前言 直接使用Session存储用户登录信息&#xff0c;此时的会话信息是存储在内中的&#xff0c;只要项目重启存储的Session信息就会丢失。而使用Redis存储Session的话就不会存在这种情况&#xff0c;即使项目重启也并不影响&#xff0c;也无需用户重…

新款 锐科达 SV-2102VP SIP广播音频模块 RTP流音频广播

新款 锐科达 SV-2102VP SIP广播音频模块 RTP流音频广播 SV-2102VP和 SV-2103VP网络音频模块是一款通用的独立SIP音频功能模块&#xff0c;可以轻松地嵌入到OEM产品中。该模块对来自网络的SIP协议及RTP音频流进行编解码。 本系列模块可以应用于以下领域&#xff1a; • 各种商…

在Vue中实现组件间的通信(父子通信,非父子通信,通用通信)

在vue中实现组件间的通信 文章目录 在vue中实现组件间的通信1、组件通信1.1、不同的组件关系和组件通信方案分类1.2、组件通信的解决方案1.3、非父子通信- event bus事件总线 2、prop2.1、prop详解2.2、prop校验2.3、prop & data、单向数据流 3、v-mdoel原理 1、组件通信 …

Fink--3、Flink运行时架构(并行度、算子链、任务槽、作业提交流程)

1、系统架构&#xff08;以Standalone会话模式为例&#xff09; 1、作业管理器&#xff08;JobManager&#xff09; JobManager是一个Flink集群中任务管理和调度的核心&#xff0c;是控制应用执行的主进程。也就是说&#xff0c;每个应用都应该被唯一的JobManager所控制执行。 …

隧道爬虫IP工作原理及应用场景解析

隧道爬虫IP作为一种网络爬虫IP技术&#xff0c;可在网络通信中实现隐私保护和数据安全传输。本文将深入探讨隧道爬虫IP的工作原理&#xff0c;并介绍其在不同应用场景下的具体应用。无论你是网络爱好者还是技术专业人士&#xff0c;相信这篇文章都能为你带来一些新的见解和启发…

网络编程套接字 | TCP套接字

前面的文章中我们使用UDP套接字编写了四个版本&#xff0c;不同的UDP服务器&#xff0c;在本文中我们将要对TCP套接字进行几个不同的版本的代码的编写&#xff0c;首先测试一下TCP套接字的代码&#xff0c;然后是将这个版本进行修改成多进程版本的&#xff0c;再将代码修改成多…

R语言RSTAN MCMC:NUTS采样算法用LASSO 构建贝叶斯线性回归模型分析职业声望数据...

全文链接&#xff1a;http://tecdat.cn/?p24456 如果你正在进行统计分析&#xff1a;想要加一些先验信息&#xff0c;最终你想要的是预测。所以你决定使用贝叶斯&#xff08;点击文末“阅读原文”获取完整代码数据&#xff09;。 相关视频 但是&#xff0c;你没有共轭先验。你…

【算法训练-二叉树 五】【最近公共祖先】二叉树的最近公共祖先

废话不多说&#xff0c;喊一句号子鼓励自己&#xff1a;程序员永不失业&#xff0c;程序员走向架构&#xff01;本篇Blog的主题是【二叉树的节点查找】&#xff0c;使用【二叉树】这个基本的数据结构来实现&#xff0c;这个高频题的站点是&#xff1a;CodeTop&#xff0c;筛选条…

基于微信小程序的高校就业招聘系统设计与实现(源码+lw+部署文档+讲解等)

前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f447;&#x1f3fb;…

悬崖边:企业如何应对网络安全漏洞趋势

在本文中&#xff0c;我们将讨论企业在处理漏洞时面临的挑战&#xff0c;解释安全漏洞是如何引发网络攻击的&#xff0c;以及为什么它会导致不可接受的事件。我们还将分享我们在识别趋势性漏洞方面的经验。 现代信息安全方法正在成为企业的工作流程。例如&#xff0c;不久前&a…

Visio 无边框保存png和pdf文件

1 无边框保存为png 1 点击【开发工具】- 【显示ShapeSheet】- 【页】 选择【Print Properties】 更改【PageLeftMargin、PageRightMargin、PageTopMargin、PageBottomMargin】的数值&#xff0c;如果改成0&#xff0c;那么就完全没有空白。更改数值后一定要回车&#xff01; …