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.hqwc.cn/news/679704.html

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

相关文章

医疗器械——血氧仪芯片方案

血氧仪方案使用MCU主控芯片结合红光、红外线传感器&#xff0c;以还原血红蛋白&#xff08;Hb&#xff09;、氧合血红蛋白&#xff08;HbO2&#xff09;在红光和近红外光区域的吸收光谱特性为理论依据&#xff0c;进行血氧含量和心率测量&#xff0c;并将所测结果显示在显示屏上…

区块链 | NFT 水印:Review on Watermarking Techniques(一)

&#x1f34d;原文&#xff1a;Review on Watermarking Techniques Aiming Authentication of Digital Image Artistic Works Minted as NFTs into Blockchains 1 应用于 NFT 的水印技术 常见的水印技术类型可以分为&#xff1a; 可见 v i s i b l e \mathsf{visible} visi…

智慧农业可视化,探索未来农业的新天地

在科技日新月异的今天&#xff0c;农业领域也迎来了翻天覆地的变化。不再只是面朝黄土背朝天&#xff0c;现代科技与农业的结合正在逐步改变着我们的耕种方式。 一、智慧农业&#xff0c;未来已来 步入智慧农业展馆&#xff0c;仿佛进入了一个科幻世界。看似复杂的农业数据&am…

探索鸿蒙开发:鸿蒙系统如何引领嵌入式技术革新

嵌入式技术已经成为现代社会不可或缺的一部分。而在这个领域&#xff0c;华为凭借其自主研发的鸿蒙操作系统&#xff0c;正悄然引领着一场技术革新的浪潮。本文将探讨鸿蒙开发的特点、优势以及其对嵌入式技术发展的深远影响。 鸿蒙操作系统的特点 鸿蒙&#xff0c;作为华为推…

【练习3】

1.将二叉搜索树转为排序的双向链表 (好久没看数据结构&#xff0c;忘完了&#xff0c;学习大佬的代码&#xff09; class Solution { public:Node* prenullptr,*headnullptr; //pre为每次遍历时的前一个节点&#xff0c;head记录头节点Node* treeToDoublyList(Node* root) {if…

2024041702-计算机操作系统 - 死锁

计算机操作系统 - 死锁 计算机操作系统 - 死锁 必要条件处理方法鸵鸟策略死锁检测与死锁恢复 1. 每种类型一个资源的死锁检测2. 每种类型多个资源的死锁检测3. 死锁恢复 死锁预防 1. 破坏互斥条件2. 破坏占有和等待条件3. 破坏不可抢占条件4. 破坏环路等待 死锁避免 1. 安全状态…

Linux进程——Linux进程间切换与命令行参数

前言&#xff1a;在上一篇了解完进程状态后&#xff0c;我们简单了解了进程优先级&#xff0c;然后遗留了一点内容&#xff0c;本篇我们就来研究进程间的切换&#xff0c;来理解上篇提到的并发。如果对进程优先级还有没理解的地方可以先阅读&#xff1a; Linux进程优先级 本篇…

创建和管理数据库

1. 一条数据的存储过程 存储数据是处理数据的第一步.只有正确的把数据存储起来&#xff0c;我们才能进行有效的处理和分析.否则&#xff0c;只能是一团乱麻.在MySQL中&#xff0c;一个完整的数据存储过程一共有四步 : 创建数据库&#xff0c;确认字段&#xff0c;创建数据表&a…

新火种AI|马斯克聘用OpenAI泄密者,他们的梁子着实越结越深...

作者&#xff1a;小岩 编辑&#xff1a;彩云 就在最近&#xff0c;昔日就职于OpenAI的工程师Pavel Izmailov正式加入了马斯克的AI团队&#xff0c;他还在自己的推特上大张旗鼓的做着宣传&#xff1a;研究院xai。 AI工程师的跳槽本不值得惊讶&#xff0c;但Pavel的跳槽却在行…

C数据结构:栈

目录 栈的作用 栈的实现 栈的数据结构 栈的初始化 栈的销毁 栈的插入 栈的删除 获得栈顶元素 获得栈有效元素个数 判断栈是否为空 栈的使用 完整代码 栈是一种特殊结构的线性表 先来看看栈的图 之所以说它特殊&#xff0c;是因为它的插入删除功能比较特殊 栈的插…

书单 | 6本AI领域名家名作,大模型时代,趁风而起!

–文末赠书– 大模型时代&#xff0c;想抓住风口吗&#xff1f; 本期书单就来分享6本AI领域名家名作&#xff0c;给大家把大模型时代那些事儿讲清楚&#xff01; 放心&#xff0c;入门的同学也可以从最基础的学起~~ 快来看看有哪些书吧…… 01 ▊《多模态大模型&#xff1…

全栈开发之路——前端篇(5)组件间通讯和接口等知识补充

全栈开发一条龙——前端篇 第一篇&#xff1a;框架确定、ide设置与项目创建 第二篇&#xff1a;介绍项目文件意义、组件结构与导入以及setup的引入。 第三篇&#xff1a;setup语法&#xff0c;设置响应式数据。 第四篇&#xff1a;数据绑定、计算属性和watch监视 辅助文档&…