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自适应 + 动图放入lab1
    lab1->setMovie(mv);
    //设置动图运动
    mv->start();
    lab1->setScaledContents(true);
    //设置头像框 152*82
    lab2 = 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*60
    line1->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*402
    line2->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;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

快过VS Code,10天暴增20k star,高性能多人协作IDE横空出世

道歉 其实不意味着道歉的人错了 而是他认为这段关系 比自己的尊严更重要 失败了 不是说你有多差 而是说 你需要更努力了 写代码最重要的一个选择就是选哪个IDE了&#xff0c;目前主流的选择是vscode和IDEA了。 但是vscode虽然轻量&#xff0c;但是对于大型的项目仍然显得…

C语言----杨辉三角

各位看官们好。学习到这里想必大家应该对C语言的了解也是很深刻的了吧。但是我们也不能忘记我们一起学习的知识啊。在我们以前学习C语言的时候我想大家应该都听说过杨辉三角吧。虽然我们把其中的规律找到那么这个代码就简单很多了。那么接下里我们就来讲讲杨辉三角。 首先我们先…

实战28套JAVA高端架构P6/P7/P8架构—全栈架构

概述 Java SE Java SE&#xff08;Java Platform&#xff0c;Standard Edition&#xff09;。Java SE 以前称为J2SE。它允许开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的Java应用程序。Java SE 包含了支持Java Web 服务开发的类&#xff0c;并为Java Platform&…

Web服务器和Tomcat

Web介绍 对于http协议操作进行封装、简化web程序开发 部署web项目&#xff0c;对外提供上网信息浏览 Tomcat介绍 一个轻量级的web服务器 也称为web容器 Tomcat的文件夹介绍 下载地址&#xff1a;Apache Tomcat - Apache Tomcat 9 Software Downloads 安装&#xff1a;直…

「YashanDB迁移体验官」Oracle向YashanDB迁移的丝滑体验

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 作者&#xff1a;IT邦德 中国DBA联盟(ACDU)成员&#xff0c;10余年DBA工作经验&#xff0c; Oracle、PostgreSQL ACE CSDN博客专家及B站知名UP主&#xff0c;全网粉丝10万 擅长主流Oracle、My…

【数据可视化-01】Matplotlib图形实战宝典

在数据分析领域&#xff0c;图形化展示数据是非常重要的环节。Python中的matplotlib库是绘制各类图形的强大工具。本文将介绍如何使用matplotlib绘制折线图、直方图、饼图、散点图和柱状图等数据分析中常见的图形&#xff0c;并附上相应的代码示例&#xff0c;可以当初matplotl…

GD32F103RCT6/GD32F303RCT6(9)高级定时器互补PWM波输出实验

本文章基于兆易创新GD32 MCU所提供的2.2.4版本库函数开发 后续项目主要在下面该专栏中发布&#xff1a; 手把手教你嵌入式国产化_不及你的温柔的博客-CSDN博客 感兴趣的点个关注收藏一下吧! 电机驱动开发可以跳转&#xff1a; 手把手教你嵌入式国产化-实战项目-无刷电机驱动&am…

第 8 章 电机测速(自学二刷笔记)

重要参考&#xff1a; 课程链接:https://www.bilibili.com/video/BV1Ci4y1L7ZZ 讲义链接:Introduction Autolabor-ROS机器人入门课程《ROS理论与实践》零基础教程 8.3.3 电机测速01_理论 测速实现是调速实现的前提&#xff0c;本节主要介绍AB相增量式编码器测速原理。 1.概…

深度学习——前馈全连接神经网络

前馈全连接神经网络 1.导入需要的工具包2.数据导入与数据观察&#xff08;1&#xff09;读取csv的文件信息&#xff1a;&#xff08;2&#xff09;训练数据前5行&#xff08;3&#xff09;打印第一个图&#xff08;4&#xff09;观察数据中的信息&#xff08;5&#xff09;查看…

浏览器输入URL到页面展示的过程详解

重点面试题&#xff1a;当你的浏览器中地址栏输入地址并回车的一瞬间到页面能够展示回来&#xff0c;经历了什么&#xff1f; step 1、URL解析 URL&#xff1a;internet上的每一个网页都具有一个唯一的名称标识&#xff0c;通常称之为URL&#xff08;Uniform Resource Locator…

2024蓝桥杯网络安全部分赛题wp

爬虫协议 题目给了提示访问robots.txt 会出三个目录 访问最后一个 点进去就flag{22560c15-577c-4c8b-9944-815473758bad} packet 下载附件&#xff0c;这个是流量包 放wireshark流量分析 搜http协议 发现有cat flag命令&#xff0c;直接看他返回的流量 最后base64解码即可…

C++|多态(虚函数、抽象类、多态原理)

目录 一、多态的概念及构成 1.1概念 1.2多态的构成条件(继承虚函数) 二、虚函数和虚函数重写 2.1虚函数和虚函数重写的概念 2.2虚函数的"异变"(协变析构重写) 2.3虚函数的扩展(overridefinal) 2.4重载、重写(覆盖)、隐藏(重定义)的对比 三、抽象类 3.1概念…

43.乐理基础-拍号-常见的拍号与强弱关系

首先拍号的定义&#xff1a;39.认识音符、40.什么是一拍、41.小节、小节线、终止线、42.看懂拍号的意义 通过 39.认识音符、40.什么是一拍、41.小节、小节线、终止线、42.看懂拍号的意义 应该可以知道 Y的取值只能是2、4、8、16、32、64。。。。因为Y指的是Y分音符&#xff0c;…

树莓派4b测量PM2.5

1.GP2Y1010AU0F粉尘传感器连接图 2. GP2Y1010AU0F工作原理 工作原理 传感器中心有个洞可以让空气自由流过,定向发射LED光,通过检测经过空气中灰尘折射过后的光线来判断灰尘的含量。 3.源代码 main.py # coding=UTF-8 import RPi.GPIO as GPIO from ADC import ADS1015…

【进程等待】是什么 | 为什么 | 怎么办 | wait阻塞等待

目录 进程等待是什么&#xff1f; 为什么要进程等待&#xff1f; 如何进程等待&#xff1f; wait 阻塞等待 进程等待是什么&#xff1f; 进程终止会把进程退出的数据&#xff08;退出码和退出信号&#xff09;存放到进程的PCB中保存下来&#xff0c;让父进程进行等待。…

OpenHarmony 实战开发 - 如何在源码中编译复杂应用(4.0-Release)

文档环境 开发环境&#xff1a;Windows 11 编译环境&#xff1a;Ubuntu 22.04 开发板型号&#xff1a;DAYU 200&#xff08;RK3568&#xff09; 系统版本&#xff1a;OpenHarmony-4.0-Release 功能简介 在 OpenHarmony 系统中预安装应用的 hap 包会随系统编译打包到镜像中&a…

Java毕业设计 基于SpringBoot vue社区智慧养老监护管理平台

Java毕业设计 基于SpringBoot vue社区智慧养老监护管理平台 SpringBoot 社区智慧养老监护管理平台 功能介绍 登录注册 个人中心 修改密码 个人信息 房间信息管理 房间入住信息管理 反馈信息管理 留言管理 老人信息管理 公告管理 物资申请管理 管理员管理 护工管理 体检员管理…

浅谈Windows 上的线程亲和性(Thread affinity)

​ 前言 线程属性包括是否分离、亲和性、调度策略和优先级等。Linux默认的调度策略是CFS(完全公平调度算法),而 Windows 是基于优先级抢占式的策略。 在这些方面,Windows 和 Linux 差异巨大。本文仅针对 Windows 系统的线程亲和性进行探讨。 线程亲和性(Thread affinity) 什…

解锁AI的神秘力量:LangChain4j带你步入智能化实践之门

关注微信公众号 “程序员小胖” 每日技术干货&#xff0c;第一时间送达&#xff01; 引言 在数字化转型的浪潮中&#xff0c;人工智能&#xff08;AI&#xff09;正逐渐成为推动企业创新和增长的关键力量。然而&#xff0c;将AI技术融入到日常业务流程并非易事&#xff0c;它…

谷歌月球模型

收费产品&#xff0c;白嫖党勿扰 收费金额500元 1 概述 前些时间&#xff0c;有个客户&#xff0c;想fight TAIWAN&#xff0c;于是乎&#xff0c;我把谷歌地球整个台湾的模型都下载下来了&#xff0c;大约300GB。今天&#xff0c;又有个客户&#xff0c;提出一个过分要求&…