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

【嵌入式学习】QT-Day3-Qt基础

1> 思维导图

https://lingjun.life/wiki/EmbeddedNote/20QT

2> 完善登录界面

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

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

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

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

#include "mywidget.h"
#include <QPainterPath>
#include "aerowidget.h"MyWidget::MyWidget(QWidget *parent): QWidget(parent)
{// 窗口设置setWindowTitle("登录"); // 设置窗口标题setWindowFlag(Qt::FramelessWindowHint); // 设置窗口无边框resize(400,560); // 设置窗口大小setFixedSize(400,560); // 固定窗口大小// 设置窗口图标setWindowIcon(QIcon("C:\\Users\\lingj\\Desktop\\QT\\test1_1\\favicon.ico"));// 创建并设置 QLabelQLabel *l1 = new QLabel(this);l1->setText("hello world");l1->setParent(this);l1->resize(320,100);l1->move(40,40);l1->setPixmap(QPixmap(":/pic/hello.png")); // 设置图片l1->setScaledContents(true); // 图片自适应大小// 创建 AeroWidgetAeroWidget aw(this);aw.setAlpha(4);// 设置窗口圆角矩形遮罩aw.setMask(createMask());// 加入文本输入框username = new QLineEdit(this);username->move(40,210);username->resize(320,50);username->setStyleSheet("background-color:rgb(255,255,255);""border-radius:10px");username->setAlignment(Qt::AlignCenter);username->setPlaceholderText("账号\\电话\\邮箱");passwd = new QLineEdit(this);passwd->move(40,280);passwd->resize(320,50);passwd->setStyleSheet("background-color:rgb(255,255,255);""border-radius:10px");passwd->setAlignment(Qt::AlignCenter);passwd->setPlaceholderText("密码");passwd->setEchoMode(QLineEdit::Password); // 设置密码模式// 创建登录按钮QPushButton *p1 = new QPushButton("登录",this);p1->move(40,400);p1->resize(320,50);p1->setStyleSheet("background-color:rgb(255,255,255);""border-radius:10px");connect(p1, &QPushButton::clicked, this, &MyWidget::on_login_clicked); // 连接登录按钮的点击事件// 创建关闭按钮QPushButton *closeButton = new QPushButton("×", this); // Close buttoncloseButton->setFixedSize(20, 20);closeButton->move(width() - closeButton->width() - 5, 5);closeButton->setStyleSheet("background-color:transparent;color:white;font-size:16px;");connect(closeButton,SIGNAL(clicked()),this,SLOT(on_close_clicked())); // 连接关闭按钮的点击事件// 创建最小化按钮QPushButton *minimizeButton = new QPushButton("-", this); // Minimize buttonminimizeButton->setFixedSize(20, 20);minimizeButton->move(width() - minimizeButton->width() - closeButton->width() - 5, 5);minimizeButton->setStyleSheet("background-color:transparent;color:white;font-size:16px;");connect(minimizeButton, &QPushButton::clicked, this, &QWidget::showMinimized); // 连接最小化按钮的点击事件// 设置鼠标追踪setMouseTracking(true);
}MyWidget::~MyWidget()
{}
void MyWidget::on_close_clicked()
{int res = QMessageBox::question(this,"提示","您是否要退出登录?",QMessageBox::Yes | QMessageBox::No);if(res == QMessageBox::Yes){close();}
}
void MyWidget::on_login_clicked()
{qDebug() << "登录中……" ;if(username->text()=="admin" & passwd->text()== "123456"){qDebug() << "登录成功";int res = QMessageBox::information(this,"提示","登陆成功",QMessageBox::Ok);if(res == QMessageBox::Ok){close();emit my_jump();}}else{int res = QMessageBox::information(this,"提示","账号和密码不匹配",QMessageBox::Yes | QMessageBox::No);if(res == QMessageBox::Yes){username->clear();passwd->clear();}else{close();}qDebug() << "登录失败,用户名或密码错误";}
}// 创建窗口遮罩的函数
QRegion MyWidget::createMask() const
{int radius = 18; // 圆角半径QSize size = this->size();QRegion region;QPainterPath path;path.addRoundedRect(QRectF(QPointF(0, 0), size), radius, radius); // 创建圆角矩形路径region = QRegion(path.toFillPolygon().toPolygon()); // 转换为多边形区域return region;
}// 重写鼠标按下事件
void MyWidget::mousePressEvent(QMouseEvent *event)
{if (event->button() == Qt::LeftButton) {// 保存鼠标按下时的位置和窗口位置m_dragPos = event->globalPos() - frameGeometry().topLeft();event->accept();}
}// 重写鼠标移动事件
void MyWidget::mouseMoveEvent(QMouseEvent *event)
{if (event->buttons() & Qt::LeftButton) {// 移动窗口到鼠标位置move(event->globalPos() - m_dragPos);event->accept();}
}

main.cpp

#include "mywidget.h"
#include "aerowidget.h"
#include "sec.h"#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);MyWidget w;sec s;w.show();QObject::connect(&w,&MyWidget::my_jump, &s, &sec::my_jump_slot);return a.exec();
}

相关文章:

【嵌入式学习】QT-Day3-Qt基础

1> 思维导图 https://lingjun.life/wiki/EmbeddedNote/20QT 2> 完善登录界面 完善对话框&#xff0c;点击登录对话框&#xff0c;如果账号和密码匹配&#xff0c;则弹出信息对话框&#xff0c;给出提示”登录成功“&#xff0c;提供一个Ok按钮&#xff0c;用户点击Ok后…...

【杭州游戏业:创业热土,政策先行】

在前面的文章中&#xff0c;我们探讨了上海、北京、广州、深圳等城市的游戏产业现状。现在&#xff0c;我们切换视角&#xff0c;来看看另一个游戏创业热土——杭州的发展情况 最近第19届亚运会在杭州举办&#xff0c;本次亚运会上&#xff0c;电子竞技首次获准列为正式比赛项…...

Python-pdfplumber读取PDF内容

文章目录 前言一、pdfplumber模块1.1 pdfplumber的特点1.2 pdfplumber.PDF类1.3pdfplumber.Page类 二 pdfplumber的使用2.1 加载PDF2.2 pdfplumber.PDF 类2.3 pdfplumber.Page 类2.4 读取PDF2.5 读取PDF文档信息2.6 查看总页数2.7 查看总页数读取第一页的宽度&#xff0c;页高等…...

js设计模式汇总

目录 前言: 单篇目录: 工厂模式 单例模式 发布订阅模式 观察者模式 中介者模式 建造者模式 解释器模式 依赖注入模式 享元模式 路由模式 计算属性模式 委托者模式 访问者模式 外观模式 备忘录模式 过滤器模式 模板方法模式 状态模式 桥接模式 原型模式 组…...

【Java面试】MongoDB

目录 1、mongodb是什么&#xff1f;2、mongodb特点什么是NoSQL数据库&#xff1f;NoSQL和RDBMS有什么区别&#xff1f;在哪些情况下使用和不使用NoSQL数据库&#xff1f;NoSQL数据库有哪些类型?启用备份故障恢复需要多久什么是master或primary什么是secondary或slave系列文章版…...

在苹果电脑MAC上安装Windows10(双系统安装的详细图文步骤教程)

在苹果电脑MAC上安装Windows10&#xff08;双系统安装的详细图文步骤教程&#xff09; 一、准备工作准备项1&#xff1a;U盘作为系统安装盘准备项2&#xff1a;您需要安装的系统镜像 二、启动转换助理步骤1&#xff1a;找到启动转换助理步骤2&#xff1a;启动转换助理步骤3&…...

18V/5A桥式驱动芯片-SS6285L兼容替代RZ7889

SS6285L是一款由工采网代理的率能DC双向马达驱动电路芯片&#xff1b;该芯片采用SOP8封装&#xff0c;符合ROHS规范&#xff0c;引脚框架100%无铅&#xff1b;它适用于玩具等类的电机驱动、自动阀门电机驱动、电磁门锁驱动等应用。 &#xff08;1&#xff09;产品描述&#xff…...

C++ Primer 笔记(总结,摘要,概括)——第3章 字符串、向量和数组

目录 3.1 命名空间的using声明 3.2 标准库类型string 3.2.1 定义和初始化string对象 3.2.2 string对象上的操作 3.2.3 处理string对象中的字符 3.3 标准库类型vector 3.3.1 定义和初始化vector对象 3.3.2 向vector对象中添加元素 3.3.3 其他vector操作 3.4 迭代器介绍 3.4.…...

Sora:OpenAI引领AI视频新时代

Sora - 探索AI视频模型的无限可能 随着人工智能技术的飞速发展&#xff0c;AI视频模型已成为科技领域的新热点。而在这个浪潮中&#xff0c;OpenAI推出的首个AI视频模型Sora&#xff0c;以其卓越的性能和前瞻性的技术&#xff0c;引领着AI视频领域的创新发展。让我们将一起探讨…...

[FPGA开发工具使用总结]VIVADO在线调试(1)-信号抓取工具的使用

目录 1简介2 添加观测信号的几种方法2.1 通过定制IP核添加2.2 通过约束文件添加2.3 通过GUI生成DEBUG约束文件2.4 两种方法的优点与缺点 3在线调试方法3.1 器件扫描设置3.2 触发条件设置3.3 触发窗口设置3.4 采样过程控制 4常见问题4.1 时钟域的选择4.2 缺少LTX文件4.3 ILA无时…...

Linux ip route命令

理解ip route命令 ip route是Linux系统中的一个非常常用的命令&#xff0c;它用于配置和管理Linux的路由表。通过ip route命令&#xff0c;管理员可以查看、添加、删除或修改Linux系统的路由表&#xff0c;从而决定数据包如何在网络中传输。例如&#xff0c;当一台Linux机器需要…...

WordPress有没有必要选择付费主题

有必要。 能用付费的&#xff0c;就尽量别用免费的。 付费主题&#xff0c;情况也比较复杂&#xff0c;先讲一下付费主题的几种情况 1、是原创付费主题。是主题制作者原创的主题。 2、是把别人的主题二次开发的付费主题。这个有些是有原始开发者授权的&#xff0c;有些就是…...

软考-中级-系统集成2023年综合知识(一)

&#x1f339;作者主页&#xff1a;青花锁 &#x1f339;简介&#xff1a;Java领域优质创作者&#x1f3c6;、Java微服务架构公号作者&#x1f604; &#x1f339;简历模板、学习资料、面试题库、技术互助 &#x1f339;文末获取联系方式 &#x1f4dd; 软考中级专栏回顾 专栏…...

Flutter NestedScrollView 内嵌视图滚动行为一致

Flutter NestedScrollView 内嵌视图滚动行为一致 视频 https://youtu.be/_h7CkzXY3aM https://www.bilibili.com/video/BV1Gh4y1571p/ 前言 上一节讲了 CustomScrollView &#xff0c;可以发现有的地方滚动并不是很连贯。 这时候就需要 NestedScrollView 来处理了。 今天会写…...

展示用HTML编写的个人简历信息

展示用HTML编写的个人简历信息 相关代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document…...

PostgreSQL 实体化视图的使用

上周的教程中&#xff0c;通过 DVD Rental Database 示例&#xff0c;让我们了解了在 PostgreSQL 中创建实体化视图的过程。正如我们所了解的&#xff0c;PostgreSQL 实体化视图提供了一种强大的机制&#xff0c;通过预计算和存储查询结果集为物理表来提高查询性能。接下来的内…...

【MySQL】数据库索引详解 | 聚簇索引 | 最左匹配原则 | 索引的优缺点

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; &#x1f525;c系列专栏&#xff1a;C/C零基础到精通 &#x1f525; 给大…...

HarmonyOS 自定义进度条 Stage模型

通过onTouch监听滑动&#xff0c;动态改变圆角 let radius 0Entry Component struct TestPage {State flip: boolean falseState progress:number 20build() {Row() {Column() {RelativeContainer(){Rect({ width: 100%, height: 40 }).radius(10).fill("#505050"…...

Flink双流(join)

一、介绍 Join大体分类只有两种&#xff1a;Window Join和Interval Join Window Join有可以根据Window的类型细分出3种&#xff1a;Tumbling(滚动) Window Join、Sliding(滑动) Window Join、Session(会话) Widnow Join。 &#x1f338;Window 类型的join都是利用window的机制…...

使用Nginx或者Fiddler快速代理调试

1 背景问题 在分析业务系统程序问题时,存在服务系统环境是其它部门或者其它小组搭建或运维的,并且现在微服务时代,服务多且复杂,在个人机器上搭建起如此环境,要么费事费力,要么不具备充足条件。 急需有一种方法或者工具可以快速辅助调试定位分析问题。本文下面介绍代理方…...

Spark 之 入门讲解详细版(1)

1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室&#xff08;Algorithms, Machines, and People Lab&#xff09;开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目&#xff0c;8个月后成为Apache顶级项目&#xff0c;速度之快足见过人之处&…...

ubuntu搭建nfs服务centos挂载访问

在Ubuntu上设置NFS服务器 在Ubuntu上&#xff0c;你可以使用apt包管理器来安装NFS服务器。打开终端并运行&#xff1a; sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享&#xff0c;例如/shared&#xff1a; sudo mkdir /shared sud…...

Spring Boot 实现流式响应(兼容 2.7.x)

在实际开发中&#xff0c;我们可能会遇到一些流式数据处理的场景&#xff0c;比如接收来自上游接口的 Server-Sent Events&#xff08;SSE&#xff09; 或 流式 JSON 内容&#xff0c;并将其原样中转给前端页面或客户端。这种情况下&#xff0c;传统的 RestTemplate 缓存机制会…...

PHP和Node.js哪个更爽?

先说结论&#xff0c;rust完胜。 php&#xff1a;laravel&#xff0c;swoole&#xff0c;webman&#xff0c;最开始在苏宁的时候写了几年php&#xff0c;当时觉得php真的是世界上最好的语言&#xff0c;因为当初活在舒适圈里&#xff0c;不愿意跳出来&#xff0c;就好比当初活在…...

使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装

以下是基于 vant-ui&#xff08;适配 Vue2 版本 &#xff09;实现截图中照片上传预览、删除功能&#xff0c;并封装成可复用组件的完整代码&#xff0c;包含样式和逻辑实现&#xff0c;可直接在 Vue2 项目中使用&#xff1a; 1. 封装的图片上传组件 ImageUploader.vue <te…...

[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...

【决胜公务员考试】求职OMG——见面课测验1

2025最新版&#xff01;&#xff01;&#xff01;6.8截至答题&#xff0c;大家注意呀&#xff01; 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:&#xff08; B &#xff09; A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...

全志A40i android7.1 调试信息打印串口由uart0改为uart3

一&#xff0c;概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本&#xff1a;2014.07&#xff1b; Kernel版本&#xff1a;Linux-3.10&#xff1b; 二&#xff0c;Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01)&#xff0c;并让boo…...

使用 SymPy 进行向量和矩阵的高级操作

在科学计算和工程领域&#xff0c;向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能&#xff0c;能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作&#xff0c;并通过具体…...

【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习

禁止商业或二改转载&#xff0c;仅供自学使用&#xff0c;侵权必究&#xff0c;如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...