当前位置: 首页 > article >正文

坐牢第三十六天(QT)

自定义QQ界面

wedget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QDebug> //qt中信息调试类
#include <QIcon> //图标类
#include <QPushButton>//按钮类
#include <QLabel> //标签类
#include <QMovie> //动图类
#include <QLineEdit> //行编辑器类
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();
signals:
    void My_signal(); //信号函数的定义
public slots:
    void My_slot();
private:
    Ui::Widget *ui;
     //2.给界面上半部分加上标签放上动图
    QLabel *lab_jm_1;//创建标签
    QMovie*move_jm_1;//创建一个movie对象
     //3.给界面下半部分加上标签放入图片
    QLabel *lab_jm_3;
    //4,给界面中间整个头像
    QLabel *lab_jm_2;
    //5.左上角qq图标
     QLabel *lab_jm_4;
     QLabel *lab_jm_5;
     //1.账号标签
     QLabel *lab_pd;
     //2.密码标签
     QLabel *lab_id;
      //3.账号行编辑器
     QLineEdit *edit_id;
     //4.账号行编辑器
     QLineEdit *edit_pd;
     //1.登录按钮
     QPushButton *btn_login;
     //结果标签
     QLabel *lab_result;
};
#endif // WIDGET_H

wedger.cpp

#include "widget.h"
#include "ui_widget.h"
#include <QDebug> //qt中信息调试类
#include <QIcon> //图标类
#include <QPushButton>//按钮类
#include <QLabel> //标签类
#include <QMovie> //动图类
#include <QLineEdit> //行编辑器类
#include <QCheckBox> //复选框类
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    /**************************界面整体样式******************************/
    //1.设置界面
    this->setFixedSize(600,500);//设置固定大小
    this->setWindowTitle("QQ 复刻版");
    this->setWindowIcon(QIcon("D:\\linux_t\\icon\\qqqingliao"));//设置窗体图标
    this->setWindowOpacity(0.9);//设置窗口透明度
    //this->setWindowFlag(Qt::FramelessWindowHint);//设置窗口纯净

    //2.给界面上半部分加上标签放上动图
    lab_jm_1 =new QLabel(this);//创建标签
    lab_jm_1->move(0,0);
    lab_jm_1->resize(600,175);//设置标签大小
    move_jm_1 =new QMovie("D:\\linux_t\\icon\\fangao");//创建一个movie对象
    lab_jm_1->setMovie(move_jm_1);//将动图放入标签中
    move_jm_1->start();//让动图动起来
    lab_jm_1->setScaledContents(true);//让动图自适应大小
    lab_jm_1->setParent(this);

    //3.给界面下半部分加上标签放入图片
    lab_jm_3=new QLabel(this);//创建标签
    lab_jm_3->move(0,lab_jm_1->height());
    lab_jm_3->resize(600,325);//设置标签大小
    lab_jm_3->setPixmap(QPixmap("D:\\linux_t\\icon\\xaingrikui"));
    lab_jm_3->setScaledContents(true);//保持图片清晰度和完整性
    lab_jm_3->setWindowOpacity(0.1);//设置透明度

    //4,给界面中间整个头像
    lab_jm_2 =new QLabel(this);//创建标签
    lab_jm_2->resize(70,70);//设置大小
    lab_jm_2->move(lab_jm_1->width()/2-lab_jm_2->width()/2,lab_jm_1->height()-lab_jm_2->height()/2);

    //设置头像位置
    lab_jm_2->setPixmap(QPixmap("D:\\linux_t\\icon\\fangaotouxiang"));//放入静态图
    lab_jm_2->setScaledContents(true);//保持图片清晰度和完整性

    //5.左上角qq图标
    lab_jm_4 =new QLabel(this);//创建标签
    lab_jm_4->resize(40,50);//设置大小
    lab_jm_4->move(30,10);//设置头像位置
    lab_jm_4->setPixmap(QPixmap("D:\\linux_t\\icon\\123"));//放入静态图
    lab_jm_4->setScaledContents(true);//保持图片清晰度和完整性
    lab_jm_5 =new QLabel(this);//创建标签
    lab_jm_5->resize(50,50);//设置大小
    lab_jm_5->move(lab_jm_4->x()+lab_jm_4->width(),lab_jm_4->y());
    lab_jm_5->setPixmap(QPixmap("D:\\linux_t\\icon\\456"));//放入静态图
    lab_jm_5->setScaledContents(true);//保持图片清晰度和完整性

    /********************************账号密码标签和行编辑器****************************/
    //1.账号标签
    lab_id=new QLabel("账号",this);//有参构造一个账号标签
    lab_id->resize(38,30);//设置大小
    lab_id->move(120,250);//设置位置
    lab_id->setPixmap(QPixmap("D:\\linux_t\\icon\\qq"));//加上图片
    lab_id->setScaledContents(true);//保持图片清晰度和完整性

    //2.密码标签
    lab_pd=new QLabel("账号",this);//有参构造一个密码标签
    lab_pd->resize(38,30);//设置大小
    lab_pd->move(120,lab_id->y()+lab_id->height()+5);//设置位置
    lab_pd->setPixmap(QPixmap("D:\\linux_t\\icon\\suo"));//加上图片
    lab_pd->setScaledContents(true);//保持图片清晰度和完整性

    //3.账号行编辑器
    edit_id =new QLineEdit("账号",this);
    edit_id->resize(200,30); //设置大小
    edit_id->move(lab_id->x()+lab_id->width()+20,lab_id->y());
    edit_id->clear();
    edit_id->setPlaceholderText("账号");

    //4.账号行编辑器
    edit_pd =new QLineEdit("账号",this);
    edit_pd->resize(200,30); //设置大小
    edit_pd->move(lab_pd->x()+lab_pd->width()+20,lab_pd->y());
    edit_pd->clear();
    edit_pd->setPlaceholderText("密码");
    edit_pd->setEchoMode(QLineEdit::Password); //设置回显模式

    /********************************登录取消按钮****************************/
    //1.登录按钮
    btn_login =new QPushButton("登录",this);
    btn_login->resize(300,50);
    btn_login->move(lab_pd->x()+30,lab_pd->y()+lab_pd->height()+50);
    btn_login->setIcon(QIcon("D:\\linux_t\\icon\\denglu")); //设置按钮图标
    //btn_login->setStyleSheet("background-color: skyblue; border: 1px solid black; color: black;");  //设置样式表

    //2.给登录按钮链接
    connect(btn_login,&QPushButton::clicked,this,&Widget::My_slot);

    /********************************结果标签****************************/
    lab_result =new QLabel(this);//有参构造一个结果标签
    lab_result->resize(100,40);
    lab_result->move(btn_login->x()+100,btn_login->y()+btn_login->height());

    /********************************复选框标签****************************/
    //1.自动登录
    QCheckBox *box1=new QCheckBox("自动登录",this);
    box1->resize(100,40);
    box1->move(btn_login->x(),btn_login->y()-50);

    //2.记住密码
    QCheckBox *box2=new QCheckBox("记住密码",this);
    box2->resize(100,40);
    box2->move(box1->x()+box1->width()+4,box1->y());

    //3.找回密码按钮
   QPushButton*  btn_id =new QPushButton("找回密码",this);
    btn_id->resize(100,40);
    btn_id->move(box2->x()+box2->width()+4,box2->y());
    btn_id->setStyleSheet("background-color: rgba(0, 0, 0, 0);");

    //4.注册账号按钮
   QPushButton*  btn_pd =new QPushButton("注册账号",this);
    btn_pd->resize(100,40);
    btn_pd->move(lab_jm_4->x(),450);
    btn_pd->setStyleSheet("background-color: rgba(0, 0, 0, 0);");
}

Widget::~Widget()
{
    delete ui;
}
void Widget:: My_slot()
{
    if(edit_id->text()==edit_pd->text())
    {

        //this-> close();
        lab_result->setStyleSheet(" color: bleak;");
        lab_result->setText("登录成功");
    }
    else
    {
        edit_pd->clear();
        lab_result->setStyleSheet(" color: rgb(255, 0,0);");
        lab_result->setText("登录失败");
    }
}

结果:

 


http://www.kler.cn/news/293462.html

相关文章:

  • iOS——Block与内存管理
  • Kafka 实战演练:创建、配置与测试 Kafka全面教程
  • 《Python爬虫逆向实战》加密方法远程调用(RPC)
  • TRIZ在充电桩安全中的应用探究
  • Java 入门指南:Java 并发编程 —— Fork/Join 框架 实现任务的拆分与合并
  • 探索PDF的奥秘:pdfrw库的神奇之旅
  • 2024,中国服务器操作系统迎云智主升浪
  • 鸿蒙开发5.0【高级图表实现】 解决方案
  • c++的类和对象
  • vue-seamless-scroll(二)点击事件
  • 为什么深度学习用GPU而不是CPU
  • electron 客户端 windows linux(麒麟V10)多系统离线打包 最新版 <二>
  • FPGA开发:Verilog基础语法
  • 如何进行不同数据库的集群操作?--从部署谈起,今天来看MySQL和NoSql数据库Redis的集群
  • FFMPEG -- 音频开发
  • 初识命名空间
  • S7-PLC
  • 安装win7鼠标键盘不能动原因分析及解决办法
  • 【AI学习】聊两句深度学习的目标函数
  • 计算机网络27——Linux1
  • 黑马JavaWeb开发笔记14——Tomcat(介绍、安装与卸载、启动与关闭)、入门程序解析(起步依赖、SpringBoot父工程、内嵌Tomcat)
  • EmguCV学习笔记 VB.Net 10.2 人脸识别 FaceRecgnizer类
  • 基于C++实现一个房贷计算小程序(含代码)
  • C++---由优先级队列认识仿函数
  • 《OpenCV计算机视觉》—— 图像形态学(腐蚀、膨胀等)
  • OpenGL GLFW OIT 实现
  • javaEE-多线程(3)
  • 亿佰特-NT1/NT1-B串口转RJ45以太网模块
  • python 实现newton raphson牛顿-拉夫森算法
  • 在Go语言中,不同类型之间转换的一些主要方法: