【嵌入式学习】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();
}

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

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

相关文章

子查询

Oracle从入门到总裁:https://blog.csdn.net/weixin_67859959/article/details/135209645 子查询 前面我们学过了利用 group by子句可以实现分组的操作&#xff0c;主要的统计函数有&#xff1a;COUNT()、AVG()、SUM()、MAX()、MIN() 并且介绍了分组统计查询的若干限制以及在…

设计模式面试系列-03

1. Java 中如何实现模板方法模式? 举例:去餐厅吃饭,餐厅给我们提供了一个模板就是:看菜单,点菜,吃饭,付款,走人。注意这里“点菜和付款”是不确定的由子类来完成的,其他的则是一个模板。 1、先定义一个模板。把模板中的点菜和付款,让子类来实现。 package com.yoo…

IP 协议

IP 协议 .IP协议格式四位版本号四位首部长度8位服务类型16位总长度16位标识符,3位标志位,13位片偏移8位生存时间TTL8位协议16位首部校验和32位源地址 32位目的地址IP地址的组成特殊的IP地址 . IP协议格式 四位版本号 用来表示IP协议的版本,现有的IP协议只有两个版本,IPv4,IPv6…

comfyui节点编写示例文件(下)

** 1、先看示例文件的结构 ** ** 2、设置输入参数 ** ** 3、节点指定任务、输出啥 ** ** 4、这个节点干了啥&#xff0c;定义函数、输出结果 ** ** 5、多个节点&#xff0c;就多个类 ** ** 6、设置多个入口 ** ** 7、放置 ** 直接把py文件放到 .\Co…

PostgreSQL教程(四):高级特性

一、简介 在之前的章节里我们已经涉及了使用SQL在PostgreSQL中存储和访问数据的基础知识。现在我们将要讨论SQL中一些更高级的特性&#xff0c;这些特性有助于简化管理和防止数据丢失或损坏。最后&#xff0c;我们还将介绍一些PostgreSQL扩展。 本章有时将引用教程&#xff0…

消息中间件之RocketMQ为什么写文件这么快?

RocketMQ的存储涉及中&#xff0c;很大一部分是基于Kafka的涉及进行优化的。 PageCache 现代操作系统内核被设计为按照Page读取文件&#xff0c;每个Page默认4KB, 因为程序一般符合局部性原理&#xff0c;所以操作系统在读取一段文件内容时&#xff0c;会将该段内容和附件的文…

Nginx网络服务二-----(虚拟机和location)

一、HTTP设置 1.设置虚拟主机 1.1Nginx 基于域名---虚拟主机 include /apps/nginx/conf.d/*.conf; 1.2Nginx 基于端口---虚拟主机 在做了域名的基础上&#xff0c;按照以下步骤继续 1.3Nginx 基于IP---虚拟主机 2.server下的root root路径格式 指定文件的路径 url …

DataX学习详解

参考视频 02_DataX_概述_哔哩哔哩_bilibili 参考文档 大数据技术之DataX-阿里云开发者社区 介绍 DataX 是阿里巴巴开源的一个 异构数据源 离线 同步工具 致力于实现包括关系型数据库(MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、FTP&#xff0c;MongDB等各种异构数据源之间…

[python][whl]PyOpenGL轮子文件whl格式所有版本含python3.12版本下载地址汇总

以下PyOpenGL都是windows x64系统使用pyopengl注意对应版本下载&#xff0c;文件名命名规则为&#xff0c;以PyOpenGL-3.1.6-cp312-cp312-win-amd64.whl为例子 PyOpenGL&#xff1a;python模块名称 3.1.6&#xff1a;pyopengl版本号 cp312:表示支持python3.12版本不支持其他…

五、深入学习TensorRT,Developer Guide篇(四)

上一篇文章我们介绍了C的API&#xff0c;这篇文章我们主要针对的是Python的API&#xff0c;起始C和Python在整体流程上面基本一致&#xff0c;但是由于Python天然的简洁性和易用性&#xff0c;Python的API相对来讲还是比较简单的&#xff0c;我们一起来看一下吧。 文章目录 4.…

windows下快速安装nginx 并配置开机自启动

1、下载地址&#xff1a;http://nginx.org/en/download.html 2、启动nginx 注意⚠️ 不要直接双击nginx.exe&#xff0c;这样会导致修改配置后重启、停止nginx无效&#xff0c;需要手动关闭任务管理器内的所有nginx进程。 在nginx.exe目录&#xff0c;打开命令行工具&#xf…

【springblade】springblade(bladeX) 数据权限失效原因分析

文章目录 数据权限接口权限 前言&#xff1a;最近博主在按照bladeX官方文档 配置数据权限 结果发现失效了&#xff0c;网上搜了一下没找到合适的答案&#xff0c;本着求人不如求己的精神&#xff0c;自己调试了一下发现了问题所在&#xff0c;也大致看了一下bladeX的权限逻辑。…

代码随想录算法训练营29期Day56|LeetCode 300,674,718

文档讲解&#xff1a;最长递增子序列 最长连续递增序列 最长重复子数组 300.最长递增子序列 题目链接&#xff1a;https://leetcode.cn/problems/longest-increasing-subsequence/description/ 思路&#xff1a; 设dp[i]表示i之前包括i的以nums[i]结尾的最长递增子序列的长…

unity——shader入门知识点 学习笔记【个人复习向/侵删/有不足之处欢迎斧正】

零、不同图形接口程序对Shader开发的影响&#xff1a; 1.渲染管线(流水线)和图形接口程序的关系&#xff1a;图形接口程序(OpenGL、 DX等)提供了对渲染管线(流水线)的控制和管理功能&#xff0c;它是开发者和硬件打交道的中间层 2. Shader和图形接口程序的关系&#xf…

计算机毕业设计 基于SpringBoot的宠物商城网站系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

LeetCode206反转链表

LeetCode206,直接看下面链接的动画演示部分就行了,就能快速理解pre和cur的作用 代码随想录:反转链表 这个是另外的在B站的视频讲解链接 【帮你拿下反转链表 | LeetCode&#xff1a;206.反转链表 | 双指针法 | 递归法】 https://www.bilibili.com/video/BV1nB4y1i7eL/?share_so…

Linux理解

VMware安装Linux安装 目录 VMware安装Linux安装 1.1 什么是Linux 1.2 为什么要学Linux 1.3 学完Linux能干什么 2.1 主流操作系统 2.2 Linux系统版本 VMware安装Linux安装 1.1 什么是Linux Linux是一套免费使用和自由传播的操作系统。 1.2 为什么要学Linux 1). 企业用人…

Python3获取办公室IP并更新至腾讯云安全组

需求来源&#xff1a; 由于云服务器的安全组限制了只能在公司IP下远程连接&#xff0c;每次更新安全组时只能通过手动更新&#xff0c;办公室IP是动态IP&#xff0c;每隔三天变一次IP&#xff0c;时间久了就觉得麻烦&#xff0c;所以在查阅了腾讯云文档后发现有安全组的SDK&…

【Git】:初识git

初识git 一.创建git仓库二.管理文件三.认识.git内部结构 一.创建git仓库 1.安装git 使用yum install git -y即可安装git。 2.创建仓库 首先创建一个git目录。 3.初始化仓库 这里面有很多内容&#xff0c;后面会将&#xff0c;主要是用来进行追踪的。 4.配置name和email 当然也…

Node.js的debug模块源码分析及在harmonyOS平台移植

Debug库 是一个小巧但功能强大的 JavaScript 调试工具库&#xff0c;可以帮助开发人员更轻松地进行调试&#xff0c;以便更快地发现和修复问题。它的主要特点是可以轻松地添加调试日志语句&#xff0c;同时在不需要调试时可以轻松地禁用它们&#xff0c;以避免在生产环境中对性…