2024.5.8

 

聊天框完善 

#include "mywidget.h"
#include "ui_mywidget.h"MyWidget::MyWidget(QWidget *parent): QWidget(parent), ui(new Ui::MyWidget)
{ui->setupUi(this);//设置窗口大小this->resize(400,560);//设置窗口图标和标题this->setWindowTitle("QQ");this->setWindowIcon(QIcon(":/pictrue/qq.png"));//设置固定窗口大小this->setFixedSize(400,560);//设置窗口去头部this->setWindowFlag(Qt::FramelessWindowHint);//设置窗口的背景lab1 = new QLabel(this);//设置文本大小lab1->resize(400,560);//设置动图QMovie *mv = new QMovie(":/pictrue/10.gif");//设置lab1自适应 + 动图放入lab1lab1->setMovie(mv);//设置动图运动mv->start();lab1->setScaledContents(true);//设置头像框 152*82lab2 = new QLabel(this);//设置头像框大小和位置lab2->resize(100,100);lab2->move(152,82);//设置头像框为圆形lab2->setStyleSheet("border-radius:50%");//设置头像自适应lab2->setScaledContents(true);//设置头像框头像//lab2->setPixmap(QPixmap(":/pictrue/15.gif"));QMovie *mv2 = new QMovie(":/pictrue/15.gif");lab2->setMovie(mv2);mv2->start();//设置账号文本line1 = new QLineEdit(this);//设置账号文本位置和大小   41*210   310*60line1->resize(310,50);line1->move(41,210);//设置文本背景色,边角圆弧line1->setStyleSheet("background-color:white;border-radius:10px;font:bold 20px");//设置文本提示(占位)line1->setPlaceholderText("输入QQ号");//设置密码文本line2 = new QLineEdit(this);//设置密码文本位置大小line2->resize(310,50);line2->move(41,275);//设置文本背景色和边角圆弧  41*402line2->setStyleSheet("background-color:white;border-radius:10px;font:bold 20px");//设置文本提示(占位)line2->setPlaceholderText("输入QQ密码");//设置为密码模式line2->setEchoMode(QLineEdit::Password);//设置按钮btn1 = new QPushButton("登录",this);//设置按钮位置和大小btn1->resize(310,50);btn1->move(41,400);//设置按钮不可用btn1->setEnabled(false);//设置按钮的颜色,背景色,字体大小,居中btn1->setStyleSheet("background-color:rgb(80,80,80);color:white;font:bold 20px;border-radius:10px;text-align:center");//设置关闭按钮btn2 = new QPushButton("X",this);//设置关闭按钮位置和大小btn2->resize(20,20);btn2->move(380,0);//实例化一个checkbox按钮che1 = new QCheckBox("我已阅读并同意服务协议和QQ隐私保护指引",this);che1->move(38,350);che1->resize(320,15);che1->setStyleSheet("color:white");//设置信号与槽connect(this->btn1,&QPushButton::clicked,this,&MyWidget::btn1_clicked);connect(btn2,&QPushButton::clicked,this,&MyWidget::btn2_clicked);connect(this->line1,&QLineEdit::textChanged,this,&MyWidget::btn1_perception1);connect(this->line2,&QLineEdit::textChanged,this,&MyWidget::btn1_perception2);
}MyWidget::~MyWidget()
{delete ui;
}void MyWidget::btn1_clicked(){if(this->line1->text() == this->line2->text()){QMessageBox box(QMessageBox::Information,"提示", "登陆成功",QMessageBox::Ok,this);int res = box.exec();if(res==QMessageBox::Ok){this->close();emit main_sign();}}else{QMessageBox box(QMessageBox::Warning,"警告","密码错误",QMessageBox::Ok|QMessageBox::Help,this);int res = box.exec();if(res==QMessageBox::Ok){line2->clear();}else if(res==QMessageBox::Help){line2->clear();QDesktopServices::openUrl(QUrl("https://accounts.qq.com/find/password?from=11"));}}
}void MyWidget::btn2_clicked(){int res=QMessageBox::question(this,"提示","你确定要关闭QQ吗",QMessageBox::Yes|QMessageBox::No,QMessageBox::No);if(res==QMessageBox::Yes){this->close();}
}void MyWidget::btn1_perception1(){if(this->line1->text().length()<5 || this->line2->text().length()<5){btn1->setStyleSheet("background-color:rgb(80,80,80);color:white;font:bold 20px;border-radius:10px;text-align:center");btn1->setEnabled(false);}else{btn1->setStyleSheet("background-color:rgb(0,141,235);color:white;font:bold 20px;border-radius:10px;text-align:center");btn1->setEnabled(true);}
}
void MyWidget::btn1_perception2(){if(this->line2->text().length()<5 || this->line1->text().length()<5){btn1->setStyleSheet("background-color:rgb(80,80,80);color:white;font:bold 20px;border-radius:10px;text-align:center");btn1->setEnabled(false);}else{btn1->setStyleSheet("background-color:rgb(0,141,235);color:white;font:bold 20px;border-radius:10px;text-align:center");btn1->setEnabled(true);}
}

 对话框功能实现

#include "mywidget.h"
#include "ui_mywidget.h"MyWidget::MyWidget(QWidget *parent): QWidget(parent), ui(new Ui::MyWidget)
{ui->setupUi(this);//设置窗口大小this->resize(700,600);//实例化text文本窗口text = new QTextEdit(this);//设置文本窗口大小text->resize(700,450);//实例化按钮btn1 = new QPushButton("字体",this);btn2 = new QPushButton("颜色",this);btn3 = new QPushButton("打开文件",this);btn4 = new QPushButton("保存到文件",this);//设置四个按钮的大小和位置btn1->resize(100,50);btn2->resize(100,50);btn3->resize(100,50);btn4->resize(100,50);btn1->move(70,500);btn2->move(220,500);btn3->move(370,500);btn4->move(520,500);//设置信号与槽的连接connect(btn1,&QPushButton::clicked,this,&MyWidget::btn1_clicked);connect(btn2,&QPushButton::clicked,this,&MyWidget::btn2_clicked);connect(btn3,&QPushButton::clicked,this,&MyWidget::btn3_clicked);connect(btn4,&QPushButton::clicked,this,&MyWidget::btn4_clicked);
}
void MyWidget::btn1_clicked(){bool ok;QFont t = QFontDialog::getFont(&ok,QFont("楷体",10,10,true),this,"字体");if(ok){text->setFont(t);}
}void MyWidget::btn2_clicked(){QColor c = QColorDialog::getColor(QColor("green"),this,"颜色");if(c.isValid()==true){text->setTextColor(c);}
}
void MyWidget::btn3_clicked(){QString file1 = QFileDialog::getOpenFileName(this,"文件","./","all(*.*)");QFile file(file1);if(file.open(QFile::ReadOnly)==false){QMessageBox::information(this,"提示","打开文件失败");return;}QByteArray msg = file.readAll();text->setText(msg);file.close();
}void MyWidget::btn4_clicked(){QString file1 = QFileDialog::getOpenFileName(this,"文件","./","all(*.*)");QFile file(file1);if(file.open(QFile::WriteOnly)==false){QMessageBox::information(this,"提示","打开文件失败");return;}QString msg = text->toPlainText();file.write(msg.toUtf8().constData());
}MyWidget::~MyWidget()
{delete ui;
}

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

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

相关文章

Android C++ 开发调试 LLDB 工具的使用

文章目录 调试环境准备基础命令Breakpoint CommandsWatchpoint CommandsExamining VariablesEvaluating ExpressionsExamining Thread StateExecutable and Shared Library Query Commands 参考&#xff1a; Android 中在进行 NDK 开发的时候&#xff0c;我们经常需要进行 C 代…

隐式3D形状表示:Occupancy Networks

OccNet 的关键思想是隐式地表示3D形状&#xff0c;而不是显式地表示。与直接编码形状几何信息不同&#xff0c;OccNet 将形状的表面建模为非线性分类器的决策边界。 隐式表示&#xff1a;Occupancy Networks 将 3D 形状表示为非线性分类器函数的决策边界 f θ : R 3 X → [ 0…

2024年颠覆商业模式《本草生活》项目,巧妙三招营销引流裂变套路

2024年颠覆商业模式《本草生活》项目&#xff0c;巧妙三招营销引流裂变套路 文丨微三云营销总监胡佳东&#xff0c;点击上方“关注”&#xff0c;为你分享市场商业模式电商干货。 - 引言&#xff1a;现如今流量枯竭、降本增效、红利不再已是线上营销的常态&#xff0c;互联网…

静态照片怎么合成gif?详细介绍一个方法

我们在各大平台中都能看到各种样式的gif动图。Gif动图其实就是由一帧一帧的静态图片合成的动态效果的gif&#xff0c;想要制作gif动画可以通过使用在线图片合成&#xff08;https://www.gif5.net/&#xff09;工具-GIF5工具网&#xff0c;手机、pc均可操作&#xff0c;只需要上…

nestjs 全栈进阶--自定义装饰器

视频教程 20_nest中自定义装饰器_哔哩哔哩_bilibili nest new custom-decorator -p pnpm pnpm start:dev 在Nestjs 中我们使用了大量装饰器 decorator &#xff0c;所以Nestjs 也允许我们去自定义装饰器。 1. 自定义方法装饰器 nest g decorator aaa --flat 它生产的代码…

详细分析McCabe环路复杂度(附例题)

目录 前言1. 基本知识2. 例题 前言 该知识点常出在408或者软考中&#xff0c;对此此文重点讲讲理论知识以及例题 对于例题平时看到也会更新 1. 基本知识 McCabe环路复杂度是一种用于衡量软件代码复杂性的指标&#xff0c;主要是通过计算代码中的控制流图中的环路数量来衡量…

机房——蓝桥杯十三届2022国赛大学B组真题

问题分析 这题用深搜广搜都能做&#xff0c;不过我更倾向于用广搜&#xff0c;因为广搜能更容易找到目标点。那么是采用结构体存储边还是采用二维数组存储临接矩阵呢&#xff1f;我们注意到n的取值范围为1e5,用二维数组哪怕是bool类型就需要至少1e10Byte的连续空间,这个空间太大…

5V升8.4V2A升压恒压WT3231

5V升8.4V2A升压恒压WT3231 WT3231 是一种高性能直流-直流&#xff08;DC-DC&#xff09;转换器&#xff0c;集成了能够承受10A电流和26mΩ低导通电阻的功率MOSFET。该转换器能提供高达12V的稳定输出电压&#xff0c;并具有固定600KHz开关频率&#xff0c;使得小型外部电感和电…

解决github无法克隆私有仓库,Repository not found问题(2024最新)

一、背景 这个问题出现&#xff0c;是你用了其他主机设备&#xff0c;需要重新clone私有库时&#xff0c;发现一直报找不到仓库&#xff0c;如下报错&#xff1a; remote: Repository not found.二、解决方法 &#xff08;1&#xff09;账号密码方式&#xff08;已不支持&am…

构建自己的docker镜像node.js

学习资源&#xff1a; 构建自己的 Docker 镜像_哔哩哔哩_bilibili 针对其中的一些比较困难的点写篇文章。 以下是对app.js的注释&#xff1a; // 使用 Koa 框架搭建 Node.js 应用的示例代码// 这两行代码引入了 koa 模块&#xff0c;并创建了一个新的 Koa 应用实例&#xf…

C++之QT文本处理QDir、QFileDialog、QStringList、QFile

一、相应的头文件 #include <QFileDialog> #include <QDir> #include <QStringList> 二、简介 1.QFileDialog 实际效果如下&#xff1a;比如需要选择打开的文件夹或者文件名&#xff0c;通过调用资源管理器的方式进行可视化操作。 代码示例为&#xff1a…

gitlab集群高可用架构拆分部署

目录 前言 负载均衡器准备 外部负载均衡器 内部负载均衡器 (可选)Consul服务 Postgresql拆分 1.准备postgresql集群 手动安装postgresql插件 2./etc/gitlab/gitlab.rb配置 3.生效配置文件 Redis拆分 1./etc/gitlab/gitlab.rb配置 2.生效配置文件 Gitaly拆分 1.…

五月加仓比特币

作者&#xff1a;Arthur Hayes Co-Founder of 100x. 编译&#xff1a;Liam 编者注&#xff1a;本文略有删减 (以下内容仅代表作者个人观点&#xff0c;不应作为投资决策的依据&#xff0c;也不应被视为参与投资交易的建议或意见&#xff09;。 从四月中旬到现在&#xff0c;当你…

flask框架的初步认识

flask框架的初步认识 这是一个轻量级的网页框架&#xff0c;在运行后&#xff0c;就相当于服务器&#xff0c;当用户输入URL就会触发对应的事件调用方法&#xff0c;返回给用户一个网页文件&#xff0c;并通过自动识别html标签&#xff0c;来为用户呈现对应的样式和效果&#…

小红书达人置换合作推广怎么做?

小红书作为国内领先的生活方式分享平台&#xff0c;已成为品牌与消费者沟通的重要桥梁。达人置换合作推广&#xff0c;即品牌与小红书上的意见领袖&#xff08;KOL&#xff09;合作&#xff0c;通过他们的影响力推广产品&#xff0c;已成为品牌营销的重要手段。本文伯乐网络传媒…

【光速上手 Hydra 】一行代码自动跑多次实验,Hydra 中的 Multirun 参数如何使用?

Hydra 是一个开源的 Python 框架&#xff0c;简化了研究和其他复杂应用的开发。其关键特性是能够通过组合动态地创建一个分层次的配置&#xff0c;并通过配置文件和命令行进行覆盖。Hydra 的名称来源于其能够运行多个类似的作业 - 就像一个有多个头的九头蛇一样。 主要特性&am…

TikTok 正式起诉美国政府;全新 iPad Pro 将搭载苹果 M4 芯片丨 RTE 开发者日报 Vol.199

开发者朋友们大家好&#xff1a; 这里是 「RTE 开发者日报」&#xff0c;每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE&#xff08;Real Time Engagement&#xff09; 领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「…

机器学习 | 时间序列预测中的AR模型及应用

自回归模型&#xff0c;通常缩写为AR模型&#xff0c;是时间序列分析和预测中的一个基本概念。它们在金融、经济、气候科学等各个领域都有广泛的应用。在本文中&#xff0c;我们将探索自回归模型&#xff0c;它们如何工作&#xff0c;它们的类型和实际例子。 自回归模型 自回…

Rust读写CSV文件 一维Vec类型元素、二维Vec类型元素写入CSV文件

本文主要介绍Rust读写CSV文件方法&#xff0c; Vec类型元素基本操作方法&#xff0c;Rust把一维Vec类型元素、二维Vec类型元素写入CSV文件方法。 实例测试&#xff1a; 要求读“log.csv”文件数据&#xff0c;把“时间”列数据和“次数”列数据写入日志处理结果1.csv文件&…

五一 Llama 3 超级课堂 大完结

首先很感谢上海人工智能实验室和机智流等相关举办单位组织的这个活动&#xff0c;在Llama3发布不多时就让我们可以体验到大模型的进步&#xff0c;回顾整个活动&#xff0c;从内容上看是相当用心的。从A100的提供使用到大模型部署&#xff0c;微调&#xff0c;Agent功能应用和数…