首页 > 其他分享 >坐牢第三十六天(QT)

坐牢第三十六天(QT)

时间:2024-09-06 20:51:44浏览次数:13  
标签:btn QT 标签 lab 坐牢 jm pd 第三十六 id

自定义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("登录失败");
    }
}

标签:btn,QT,标签,lab,坐牢,jm,pd,第三十六,id
From: https://blog.csdn.net/m0_62828714/article/details/141969024

相关文章

  • QT项目实战之音乐播放器2.0版本
    该版本相较于1.0版本最主要的不同在于连接数据库实现类似于歌曲收藏和取消收藏的功能。详细情况看我的这篇文章http://t.csdnimg.cn/WS5s8。效果展示VSMyMusicShow2.0define.hUseMySQL.h musicInfo.h VSMyMusicPlayer.h ......
  • 一套简约的qt 蓝色qss方案
    一套简约的qt蓝色qss方案直接使用qss代码QMenu{background:qlineargradient(x1:0,y1:0,x2:0,y2:1,stop:0rgba(255,255,255,240),stop:0.2rgba(255,255,255,200),stop:0.6rgba(255,255,255,160),stop:1rgba(255,255,255......
  • QT5 掌握debug调试的方法(简要内容:Memory查看内存地址的数值 和 查看变量值)(图文并茂)
    A1——选择构建模式(选项:debug调试、release发行、profile不知道…)A2——开始运行A3——开始调试(仅在debug调试模式下,断点调试助手才有效)A4——执行构建(生成输出目录及相应的文件,路径要求与工程的路径同级)A1——鼠标悬停变量名弹出,可固定窗口,Qt查看变量值的......
  • 基于 RocketMQ 的云原生 MQTT 消息引擎设计
    作者:沁君概述随着智能家居、工业互联网和车联网的迅猛发展,面向IoT(物联网)设备类的消息通讯需求正在经历前所未有的增长。在这样的背景下,高效和可靠的消息传输标准成为了枢纽。MQTT协议作为新一代物联网场景中得到广泛认可的协议,正逐渐成为行业标准。本次我们将介绍搭建在RocketMQ......
  • Unity+QT, 如何把Unity打包出的exe嵌入QT程序中,并且使用Socket进行交互
    文章目录概要前期准备QT与Unity的Socket通信实际应用场景总结概要在VR开发中,常常需要桌面窗口和VR头盔使用者进行交互。通过将Unity制作的VR程序嵌入到QT应用程序窗口中,并使用Socket进行通信,可以实现这种交互。本文将介绍如何实现这一功能。前期准备Unity项目打......
  • CLion 配置 Qt 开发环境
    https://blog.csdn.net/theRavensea/article/details/136534197 录CLion配置Qt开发环境环境说明基本配置1.创建Qt项目2.设置CLion工具链3.配置外部工具一些问题的补充CLion配置Qt开发环境环境说明操作系统:Windows10CLion版本:2023.3.4CMake版本:3.27.7Qt6版本:6.6.2(......
  • VS2022创建QT项目
    一、创建QT项目1.选择QTWidgetsApplication2.创建项目3.可以直接运行一个空窗口二、编写Helloworld1.双击XXXXX.h打开QT设计器2.添加一个button按钮保存后需要进行编译3.声明槽函数privateslots:voidbutton_clicked();};4.编写槽函数#include<qm......
  • 【Python篇】PyQt5 超详细教程——由入门到精通(中篇一)
    文章目录PyQt5入门级超详细教程前言第4部分:事件处理与信号槽机制4.1什么是信号与槽?4.2信号与槽的基本用法4.3信号与槽的基础示例代码详解:4.4处理不同的信号代码详解:4.5自定义信号与槽代码详解:4.6信号槽的高级用法4.7总结第5部分:文件对话框与文件处理5.1什么......
  • QT教程:start()和startTimer()的区别
    start()-QTimer类的成员函数        start()是QTimer类的成员函数,用于启动一个基于QTimer对象的定时器。QTimer是Qt中常用的定时器类,它会在设定的时间间隔后发出timeout()信号。用法QTimertimer;timer.start(1000);//每隔1000毫秒触发一次time......
  • Qt C++设计模式->策略模式
    **策略模式(StrategyPattern)**是一种行为型设计模式,它定义了一系列算法,将每一个算法封装起来,并使它们可以互相替换,策略模式让算法可以独立于使用它的客户端而变化。这意味着,客户端可以根据需要动态选择使用哪种算法,而不需要修改算法的实现。策略模式的主要组成部分策略接......