qt day 3

优化登录框,点击登录按钮,如果账号和密码匹配,则弹出 信息对话框 给出提示信息“登录成功”,并给出一个 ok 按钮,当用户点击 ok 后,关闭当前界面,跳转到另一个界面;如果账号和密码不匹配,则弹出 错误对话框 给出提示信息“登录失败,是否重新登录”,并给出两个按钮,yes 和 no,当用户点击yes后,清空两个行编辑器中的文本内容,继续登录,当用户点击no按钮后,关闭整个登录界面

#include "mywidget.h"
#include "ui_mywidget.h"MyWidget::MyWidget(QWidget *parent): QWidget(parent), ui(new Ui::MyWidget)
{ui->setupUi(this);this->resize(540,415);//窗口大小this->setFixedSize(540,415);//固定窗口大小this->setWindowTitle("QQ");//标题this->setWindowIcon(QIcon("C:\\Users\\14123\\Desktop\\qt\\pictrue\\qq.png"));//图标this->setStyleSheet("background-color:white");//图标// this->setWindowFlag(Qt::FramelessWindowHint);//去头lab1 = new QLabel(this);//设置标签lab1->resize(540, 160);//标签大小QMovie *mv = new QMovie("C:\\Users\\14123\\Desktop\\qt\\pictrue\\zz.gif");//接收动图lab1->setMovie(mv);//将动图放入标签mv->start();//让动图动起来lab1->setScaledContents(true);//自动适应大小lab2 = new QLabel(this);//设置标签2lab2->resize(30,30);//标签大小lab2->move(120,210);//标签移动位置lab2->setPixmap(QPixmap("C:\\Users\\14123\\Desktop\\qt\\pictrue\\wodepeizhenshi.png"));//将图片放入标签lab2->setScaledContents(true);//自动适应大小lab3 = new QLabel(this);//设置标签3lab3->resize(30,30);lab3->move(120, 260);lab3->setPixmap(QPixmap("C:\\Users\\14123\\Desktop\\qt\\pictrue\\passwd.jpg"));lab3->setScaledContents(true);edit1 = new QLineEdit(this);//设置行编辑器edit1->resize(275,30);//行编辑器大小edit1->move(155,210);//移动行编辑器位置edit1->setPlaceholderText("QQ号/手机号/邮箱");//行编辑器占位edit2 = new QLineEdit(this);edit2->resize(275,30);edit2->move(155,260);edit2->setPlaceholderText("密码");//行编辑器占位edit2->setEchoMode(QLineEdit::Password);//行编辑器密码模式显示btn = new QPushButton("登录",this);//按钮组件btn->resize(300,45);//按钮组件大小btn->move(120,345);//按钮组件移动位置//按钮背景色,边框倒角,字体颜色btn->setStyleSheet("background-color:red;border-radius:5px;color:white");btn->setEnabled(false);connect(this->edit1,&QLineEdit::textChanged,this,&MyWidget::edit_Slots);connect(this->edit2,&QLineEdit::textChanged,this,&MyWidget::edit_Slots);connect(this->btn,&QPushButton::clicked,this,&MyWidget::btn_Slots);}void MyWidget::btn_Slots()
{if(this->edit1->text()=="admin" && this->edit2->text()=="123456"){qDebug() << "登录成功";QMessageBox box(QMessageBox::Information,"信息对话框","登陆成功",QMessageBox::Ok,this);int res = box.exec();if(res==QMessageBox::Ok){emit jump();this->close();}}else{int res = QMessageBox::critical(this,"错误对话框","登录失败,账号或密码错误,是否重新登陆",QMessageBox::Yes|QMessageBox::No,QMessageBox::Yes);if(res==QMessageBox::Yes){this->edit1->clear();this->edit2->clear();}else if(res==QMessageBox::No){this->close();}//qDebug() << "登录失败,账号或密码错误";}
}
void MyWidget::edit_Slots()
{QString s1=this->edit1->text();QString s2=this->edit2->text();if(s1.length()>=5 && s2.length()>=6 ){this->btn->setStyleSheet("background-color:rgb(8,189,253)");this->btn->setEnabled(true);}else if(s1.length()<5 || s2.length()<6  ){this->btn->setStyleSheet("background-color:red");this->btn->setEnabled(false);}}MyWidget::~MyWidget()
{delete ui;
}

 

 文本编辑器实现完整

#include "mywidget.h"
#include "ui_mywidget.h"Mywidget::Mywidget(QWidget *parent): QWidget(parent), ui(new Ui::Mywidget)
{ui->setupUi(this);
}Mywidget::~Mywidget()
{delete ui;
}void Mywidget::on_fontbtn_clicked()
{//调用函数选择字体bool ok = false;QFont f = QFontDialog::getFont(&ok,QFont("宋体",10,10,true),this,"选择字体");//使用选择的字体if(ok){ui->textEdit->setCurrentFont(f);}}void Mywidget::on_colorbtn_clicked()
{//调用函数选择颜色QColor c = QColorDialog::getColor(QColor("red"),this,"选择颜色");if(c.isValid() == true){//使用颜色ui->textEdit->setTextColor(c);    //更改选中的文字颜色//设置选中的背景颜色// ui->textEdit->setTextBackgroundColor(c);}}void Mywidget::on_openfirebtn_clicked()
{// 调用静态成员函数,让用户选择打开的文件QString filename = QFileDialog::getOpenFileName(this,      //父组类"选择文件","./",      //起始路径"all(*.*)::image(*.jpg*.gif)::源文件(*.cpp)"    //过滤器);qDebug() << filename;//文件操作//1实例化一个文本对象QFile file(filename);//2,打开文件if(file.open(QFile::ReadOnly) == false){QMessageBox::information(this,"提示","文件打开失败");return ;}//3 读取文件内容QByteArray msg = file.readAll();//4将内容放到编辑器中ui->textEdit->setText(msg);//5关闭文件file.close();}void Mywidget::on_cunbtn_clicked()
{QString filename = QFileDialog::getSaveFileName(this,"保存文件","./","all(*.*)");//文件操作QFile file(filename);QByteArray msg = ui->textEdit->toPlainText().toLatin1();if(file.open(QFile::WriteOnly) == false){QMessageBox::information(this,"提示","文件打开失败");return ;}file.write(msg);file.close();}

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

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

相关文章

labview技术交流-将时间字符串转换成时间格式

应用场景 我们在数据库中设计了datetime类型的字段&#xff0c;比如字段名就叫“保存时间”&#xff0c;当我们使用labview将表中数据读取出来后datetime类型的数据是以字符串的格式显示的。而我们想计算两条数据“保存时间”的间隔时间时&#xff0c;用字符串类型自然是没法计…

OpenMV 图像串口传输示例

注意&#xff1a;本程序根据 OpenMV采集图片通过串口发送&#xff0c;PC接收并保存为图片 更改。 一、例程说明 这个例程主要实现了以下功能: 1. OpenMV 端采集图像:使用OpenMV开发板上的摄像头采集实时图像数据。 2. 通过串口传输图像数据:将采集到的图像数据打包成字节流,…

使用nvm管理多版本node.js

使用nvm&#xff08;Node Version Manager&#xff09;安装Node.js是一个非常方便的方法&#xff0c;因为它允许你在同一台机器上管理多个Node.js版本。以下是使用nvm安装Node.js的基本步骤&#xff1a; Linux 安装nvm 根据你的操作系统&#xff0c;安装命令可能会有所不同。以…

Java 笔记 11:Java 方法相关内容,方法的设计原则,以及方法的定义和调用

一、前言 记录时间 [2024-05-01] 系列文章简摘&#xff1a; Java 笔记 01&#xff1a;Java 概述&#xff0c;MarkDown 常用语法整理 Java 笔记 02&#xff1a;Java 开发环境的搭建&#xff0c;IDEA / Notepad / JDK 安装及环境配置&#xff0c;编写第一个 Java 程序 Java 笔记 …

idea 项目 修改项目文件名 教程

文章目录 目录 文章目录 修改流程 小结 概要流程技术细节小结 概要 原项目名 修改流程 关掉当前项目的idea页面 修改之后的文件名 重新打开idea。选择项目打开项目页面 技术细节 出现下面这个问题&#xff0c;可以参考作者新的一编文章idea开发工具 项目使用Spring框架开发解…

力扣:1979. 找出数组的最大公约数(Java)

目录 题目描述&#xff1a;输入&#xff1a;输出&#xff1a;代码实现&#xff1a; 题目描述&#xff1a; 给你一个整数数组 nums &#xff0c;返回数组中最大数和最小数的 最大公约数 。 两个数的 最大公约数 是能够被两个数整除的最大正整数。 输入&#xff1a; nums [2,5,6…

【Linux】25. 网络基础(一)

网络基础(一) 计算机网络背景 网络发展 独立模式: 计算机之间相互独立; 网络互联: 多台计算机连接在一起, 完成数据共享; 其实本质上一台计算机内部也是一个小型网络结构(如果我们将计算机内部某个硬件不存放在电脑中&#xff0c;而是拉根长长的线进行连接。这其实也就是网…

在做题中学习(51): x的平方根

69. x 的平方根 - 力扣&#xff08;LeetCode&#xff09;​​​​​​ 解法&#xff1a;二分查找 思路&#xff1a;看示例2&#xff1a; 可以看到8的平方根是2.82&#xff0c;在2^2和3^2之间&#xff0c;所以可以把数组分为两部分&#xff0c;(具有二段性) 而2.82去掉小数部分…

【Kolmogorov-Arnold网络 替代多层感知机MLPs】KAN: Kolmogorov-Arnold Networks

KAN: Kolmogorov-Arnold Networks 论文地址 代码地址 知乎上的讨论&#xff08;看一下评论区更正&#xff09; Abstract Inspired by the Kolmogorov-Arnold representation theorem, we propose Kolmogorov-Arnold Networks (KANs) as promising alternatives to Multi-Layer…

【OceanBase 系列】—— OceanBase v4.3 特性解读:查询性能提升之利器列存储引擎

原文链接&#xff1a;OceanBase 社区 对于分析类查询&#xff0c;列存可以极大地提升查询性能&#xff0c;也是 OceanBase 做好 HTAP 和 OLAP 的一项不可缺少的特性。本文介绍 OceanBase 列存的实现特色。 OceanBase从诞生起就一直坚持LSM-Tree架构&#xff0c;不断打磨功能支…

2020 年国考【计算机专业】真题及答案

真题及答案 第一部分数学基础课程 一、&#xff08;共 5 分&#xff09;用逻辑符号表达下列语句&#xff08;论域为包含一切事物的合集&#xff09; &#xff08;2 分&#xff09;确诊者并不都有症状&#xff08;注&#xff1a;需给出两种形式表达, 一种用存在量词, 一种用全称…

JavaScript 循环方法详解

在编程中&#xff0c;循环是一种重复执行代码块的机制&#xff0c;直到满足某个条件为止。JavaScript 提供了多种循环结构来帮助我们实现这一功能。以下是 JavaScript 中常用的几种循环方法的详细解释。 1. for 循环 for 循环是 JavaScript 中最常用的循环结构之一。它使用一…

python魔法方法是什么

魔法方法是python内置方法&#xff0c;不需要主动调用&#xff0c;存在的目的是为了给python的解释器进行调用&#xff0c;几乎每个魔法方法都有一个对应的内置函数&#xff0c;或者运算符&#xff0c;当我们对这个对象使用这些函数或者运算符时就会调用类中的对应魔法方法&…

leetcode746.使用最小花费爬楼梯(动态规划)

问题描述&#xff1a; 给你一个整数数组 cost &#xff0c;其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用&#xff0c;即可选择向上爬一个或者两个台阶。 你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。 请你计算并返回达到楼梯顶部的最低…

ASP.NET Core SignalR 配置与集成测试究极指南

这篇文章也可以在我的博客中查看 前言 哥们最近都在埋头苦干&#xff0c;沉默是金&#xff0c;有一段时间没更新博客了。然而今儿SignalR集成测试实属是给我整破防了。虽说SignalR是.NET官方维护的实时通信库&#xff0c;已经开发了有十几年&#xff0c;甚至已经编入至了core…

MVC与MVVM架构模式

1、MVC MVC&#xff1a;Model-View-Controller&#xff0c;即模型-视图-控制器 MVC模式是一种非常经典的软件架构模式。从设计模式的角度来看&#xff0c;MVC模式是一种复合模式&#xff0c;它将多个设计模式结合在一种解决方案中&#xff0c;从而可以解决许多设计问题。 MV…

【3D目标检测】常见相关指标说明

一、mAP指标 mean Average Precision&#xff08;平均精度均值&#xff09;&#xff0c;它是目标检测和信息检索等任务中的重要性能指标。mAP 通过综合考虑精度和召回率来衡量模型的总体性能。 1.1 精度&#xff08;Precision&#xff09; 表示检索到的目标中实际为正确目标…

Spring Task及订单状态定时处理

1&#xff1a;Spring Task概念&#xff1a; Spring Task 是Spring框架提供的任务调度工具&#xff0c;可以按照约定的时间自动执行某个代码逻辑 定时任务的理解 定时任务即系统在特定时间执行一段代码&#xff0c;它的场景应用非常广泛&#xff1a; 购买游戏的月卡会员后&a…

前端如何给特定的组件设置缓存并处理定位问题?

前端如何给某些组件设置缓存并处理定位? 最近有个需求就是a>b,b页面处理了些操作,返回a页面时, b页面若有操作则a页面需要刷新并定位到上次点击的位置,b若没有操作则无需刷新直接定位上次点击的位置 1.首先在store中存储缓存的组件 vuex代码: const cached {state: {ca…

Centos7网络处理name or service not known

1、编辑->虚拟网络编辑器 2、查看本机的ip 3、 /etc/sysconfig/network-scripts/ 查看文件夹下面的 ifcfg-eth33 后面的33可能不一样 vi /etc/resolv.conf 编辑文件添加以下DNS nameserver 114.114.114.114 4、设置本机的网络 5、ping www.baidu.com 先重启…