当前位置: 首页 > news >正文

Qt_day4:2024/3/25

作业1:

完善对话框,点击登录对话框,如果账号和密码匹配,则弹出信息对话框,给出提示”登录成功“,提供一个Ok按钮,用户点击Ok后,关闭登录界面,跳转到其他界面

如果账号和密码不匹配,弹出错误对话框,给出信息”账号和密码不匹配,是否重新登录“,并提供两个按钮Yes|No,用户点击Yes后,清除密码框中的内容,继续让用户进行登录,如果用户点击No按钮,则直接关闭登录界面

如果用户点击取消按钮,则弹出一个问题对话框,给出信息”您是否确定要退出登录?“,并给出两个按钮Yes|No,用户点击Yes后,关闭登录界面,用户点击No后,关闭对话框,继续执行登录功能

要求:基于属性版和基于静态成员函数版至少各用一个

代码:

第一个界面:

头文件:

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QMovie> //动图类
#include <QMessageBox> //消息对话框类QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();signals:void jump_signal();//界面跳转的信号public slots://自定义关闭窗口的槽函数void clicked_close();//自定义最小化窗口的槽函数void clicked_Mini();//自定义判断账号和密码的槽函数void clicked_Login();private:Ui::Widget *ui;
};
#endif // WIDGET_H

源文件:

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//动图动起来QMovie *mv = new QMovie(":/Logo/preview.gif");ui->mainlab->setMovie(mv);mv->start();ui->mainlab->setScaledContents(true);//纯净窗口this->setWindowFlag(Qt::FramelessWindowHint);//去掉空白this->setAttribute(Qt::WA_TranslucentBackground);//手动连接自定义信号和槽函数,实现窗口关闭connect(ui->quit, SIGNAL(clicked()), this, SLOT(clicked_close()));//手动连接自定义信号和槽函数,实现窗口关闭connect(ui->Mini, SIGNAL(clicked()), this, SLOT(clicked_Mini()));//使用qt5版本,手动连接信号和自定义槽函数connect(ui->Login, &QPushButton::clicked, this, &Widget::clicked_Login);}Widget::~Widget()
{delete ui;
}//退出窗口
void Widget::clicked_close()
{//弹出问题对话框int ret = QMessageBox::question(this, "问题", "您是否确定要退出登录?", QMessageBox::Yes | QMessageBox::No);if(ret == QMessageBox::Yes){this->close();}
}
//最小化界面
void Widget::clicked_Mini()
{this->setWindowState(Qt::WindowMinimized);
}void Widget::clicked_Login()
{if(ui->userName->text() == "admin" && ui->passwd->text() == "123456"){//提示登录成功QMessageBox msg(QMessageBox::Information, "消息", "登录成功", QMessageBox::Ok,this);int ret = msg.exec();if(ret == QMessageBox::Ok){//点击 ok 后,实现界面跳转工作this->close();emit jump_signal();}}else{//提示错误,表示账号或密码不正确int ret = QMessageBox::warning(this, "错误", "账号和密码不匹配,是否重新登录", QMessageBox::Yes | QMessageBox::No);if(ret == QMessageBox::Yes){//用户点击 Yes 按钮,清空账号和密码,用户可以继续输入ui->userName->setText("");ui->passwd->setText("");}else{//用户点击 No 按钮,直接退出登录界面this->close();}}
}
第二个界面:

头文件:

#ifndef SECOND_H
#define SECOND_H#include <QWidget>namespace Ui {
class second;
}class second : public QWidget
{Q_OBJECTpublic:explicit second(QWidget *parent = nullptr);~second();public slots:void jump_slot(); //第二个界面槽函数声明private:Ui::second *ui;
};#endif // SECOND_H

 源文件:

#include "second.h"
#include "ui_second.h"second::second(QWidget *parent) :QWidget(parent),ui(new Ui::second)
{ui->setupUi(this);
}second::~second()
{delete ui;
}
//界面跳转的槽函数的实现
void second::jump_slot()
{//打开第二个界面this->show();
}

主函数:

#include "widget.h"
#include "second.h"
#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);//第一个界面Widget w;w.show();//第二个界面second s;//连接两个界面QObject::connect(&w, &Widget::jump_signal, &s, &second::jump_slot);return a.exec();
}

效果视频:

1711373439369335267

作业2:思维导图

相关文章:

  • NetCore itext7 创建、编辑PDF插入表格、图片、文字(三)
  • R语言使用dietaryindex包计算NHANES数据多种营养指数(2)
  • 自动化组高度件切割计算
  • 为什么Python不适合写游戏?
  • React 应用实现监控可观测性最佳实践
  • 【中间件】docker数据卷
  • 使用Docker搭建YesPlayMusic网易云音乐播放器并发布至公网访问
  • 小米汽车正式发布:开启智能电动新篇章
  • MongoDB内存过高问题分析解决
  • ChatGPT与传统搜索引擎的区别:智能对话与关键词匹配的差异
  • |行业洞察·趋势报告|《2024旅游度假市场简析报告-17页》
  • VSCode 如何同步显示网页在手机或者平板上
  • C语言数据结构基础——排序
  • 影视文件数字指纹签名检验系统的用户操作安全大多数
  • 数据库管理开发工具Navicat for MySQL Mac版下载
  • [分享]iOS开发-关于在xcode中引用文件夹右边出现问号的解决办法
  • 【译】React性能工程(下) -- 深入研究React性能调试
  • avalon2.2的VM生成过程
  • const let
  • DOM的那些事
  • git 常用命令
  • JavaSE小实践1:Java爬取斗图网站的所有表情包
  • Java面向对象及其三大特征
  • MySQL用户中的%到底包不包括localhost?
  • npx命令介绍
  • oschina
  • Three.js 再探 - 写一个跳一跳极简版游戏
  • 类orAPI - 收藏集 - 掘金
  • 如何使用 OAuth 2.0 将 LinkedIn 集成入 iOS 应用
  • 收藏好这篇,别再只说“数据劫持”了
  • 小程序开发中的那些坑
  • ​secrets --- 生成管理密码的安全随机数​
  • #在线报价接单​再坚持一下 明天是真的周六.出现货 实单来谈
  • ( )的作用是将计算机中的信息传送给用户,计算机应用基础 吉大15春学期《计算机应用基础》在线作业二及答案...
  • (04)odoo视图操作
  • (3)STL算法之搜索
  • (笔试题)合法字符串
  • (太强大了) - Linux 性能监控、测试、优化工具
  • (转)大型网站的系统架构
  • (最简单,详细,直接上手)uniapp/vue中英文多语言切换
  • .bat批处理(八):各种形式的变量%0、%i、%%i、var、%var%、!var!的含义和区别
  • .NET Core 和 .NET Framework 中的 MEF2
  • .NET Core 将实体类转换为 SQL(ORM 映射)
  • .Net Redis的秒杀Dome和异步执行
  • .Net Web项目创建比较不错的参考文章
  • .NET 分布式技术比较
  • .NET分布式缓存Memcached从入门到实战
  • .NET业务框架的构建
  • @RequestBody与@ModelAttribute
  • [ 隧道技术 ] 反弹shell的集中常见方式(四)python反弹shell
  • [ 转载 ] SharePoint 资料
  • [<事务专题>]
  • [2024最新教程]地表最强AGI:Claude 3注册账号/登录账号/访问方法,小白教程包教包会
  • [Android]创建TabBar
  • [Angular] 笔记 21:@ViewChild