返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >手把手教你实现漂亮的Qt 登录界面
  • 570
分享到

手把手教你实现漂亮的Qt 登录界面

2024-04-02 19:04:59 570人浏览 八月长安
摘要

前言 最近在使用Qt5,Qt Creator做一个管理系统类的项目,自然需要用到登录界面,故记录一下登录界面的制作。其中一些功能的实现也得益于之前Qt5基础视频不规则窗口部分的学习。

前言

最近在使用Qt5,Qt Creator做一个管理系统类的项目,自然需要用到登录界面,故记录一下登录界面的制作。其中一些功能的实现也得益于之前Qt5基础视频不规则窗口部分的学习

手把手教你实现漂亮的登录界面

首先看一下成品。

在这里插入图片描述

第一步、新建一个Qwidget项目

没必要用qmainwindow,不需要那些菜单,一般用qwidget就可以,注意勾选ui。

在这里插入图片描述

第二步、添加界面组件

1、添加容器

在这里插入图片描述

调整容器为合适大小,同时调整整个画布为合适大小。

在这里插入图片描述

2、添加按钮,标签,文字组件

构思:
账号密码部分使用Input Widgets:Line Edit
LoGo和忘记密码使用两个Display Widgets:TextLabel
是否记住我选择一个Buttons:CheckBox
登录按钮使用Buttons:PushButton

在这里插入图片描述

3、修改组件名称

首先修改Line Edit默认文本属性,分别点击两个LineEdit修改文本属性为Username和PassWord

在这里插入图片描述

然后其他的按钮文本标签直接双击修改名称即可。

在这里插入图片描述

以上两步之后,可以得到这个样子(这里统一在Wighets右边的菜单里修改过字体,一会可以通过样式表统一去改)。

在这里插入图片描述

4、添加样式表

类似于CSS,Qt具有Qss,最为关键的一步就是添加样式表。在Frame容器外 画布内 右键改变样式表,输入以下代码。


*{
background:rgb(255, 255, 255);
font-size:15px;
font-style:MingLiU-ExtB;
}
QFrame{
border:sold 10px rgba(0,0,0);
background-image:url(H:/GUI_design/day04/image/Login_Blue5);//背景
}
QLineEdit{
color:#8d98a1;
background-color:#405361;
font-size:16px;
border-style:outset;
border-radius:10px;
font-style:MingLiU-ExtB;
}
QPushButton{
background:#ced1d8;
border-style:outset;
border-radius:10px;
font-style:MingLiU-ExtB;
}
QPushButton:pressed{
background-color:rgb(224,0,0);
border-style:inset;
font-style:MingLiU-ExtB;
}
QCheckBox{
background:rgba(85,170,255,0);
color:white;
font-style:MingLiU-ExtB;
}
QLabel{
background:rgba(85,170,255,0);
color:white;
font-style:MingLiU-ExtB;
font-size:14px;
}

背景部分找“度娘”就可以。

在这里插入图片描述

应用样式表后展示。

在这里插入图片描述

第三步、实现最小化窗口和关闭窗口功能

1、添加最小化和关闭窗口按钮

按钮选择Buttons:Tool Button,最小化采用-,关闭窗口采用x。

在这里插入图片描述

2、按钮转到槽

将两个按钮都转到槽。

在这里插入图片描述

3、代码示例

转到槽之后,只需要在相应的函数里添加close()和showMinimized()功能即可。具体的代码如下。

widget.h


#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

private slots:
    void on_toolButton_clicked();

    void on_toolButton_2_clicked();

private:
    Ui::Widget *ui;
};
#endif // WIDGET_H

main.cpp


#include "widget.h"

#include <QApplication>

int main(int arGC, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();
    return a.exec();
}

widget.cpp


#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
}

Widget::~Widget()
{
    delete ui;
}

//核心代码就这几行
void Widget::on_toolButton_clicked()
{
    close();
}

void Widget::on_toolButton_2_clicked()
{
    showMinimized();
}

调整画布到合适大小

在这里插入图片描述

展示如下:

在这里插入图片描述

这个时候我们还需要把Widget自带的上边框去掉,并且去掉背景。

第四步、隐藏widget窗口边框和背景

widget.cpp文件中添加如下两句代码即可。


Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    //去窗口边框
        setWindowFlags(Qt::FramelessWindowHint | windowFlags());

    //把窗口背景设置为透明;
        setAttribute(Qt::WA_TranslucentBackground);
}

第五步、实现界面可移动

需要添加一个鼠标移动和鼠标按下事件。以*e来获取鼠标移动或按下。
main.cpp


#include "widget.h"

#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();
    return a.exec();
}

widget.h


#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

protected:

    void mouseMoveEvent(QMouseEvent *e);//鼠标移动
    void mousePressEvent(QMouseEvent *e);//鼠标按下移动

private slots:
    void on_close_clicked();

    void on_minimized_clicked();


private:
    Ui::Widget *ui;

     QPoint p;
};
#endif // WIDGET_H

widget.cpp


#include "widget.h"
#include "ui_widget.h"
#include <QPainter>
#include <QMouseEvent>


Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    //去窗口边框
        setWindowFlags(Qt::FramelessWindowHint | windowFlags());

    //把窗口背景设置为透明;
        setAttribute(Qt::WA_TranslucentBackground);

}

Widget::~Widget()
{
    delete ui;
}


void Widget::mousePressEvent(QMouseEvent *e)
{
    if(e->button() == Qt::LeftButton)
    {
        //求坐标差值
        //当前点击坐标-窗口左上角坐标
        p = e->globalPos() - this->frameGeometry().topLeft();
    }
}

void Widget::mouseMoveEvent(QMouseEvent *e)
{
    if(e->buttons() & Qt::LeftButton)
    {
        //移到左上角
        move(e->globalPos() - p);
    }

}

void Widget::on_close_clicked()
{
    close();
}
void Widget::on_minimized_clicked()
{
    showMinimized();
}

参考:

https://www.bilibili.com/video/BV1gb411W7WE?p=2

到此这篇关于手把手教你实现漂亮的Qt 登录界面的文章就介绍到这了,更多相关Qt 登录界面内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 手把手教你实现漂亮的Qt 登录界面

本文链接: https://lsjlt.com/news/158515.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 手把手教你实现漂亮的Qt 登录界面
    前言 最近在使用Qt5,Qt Creator做一个管理系统类的项目,自然需要用到登录界面,故记录一下登录界面的制作。其中一些功能的实现也得益于之前Qt5基础视频不规则窗口部分的学习。...
    99+
    2024-04-02
  • 如何实现漂亮的Qt 登录界面
    本篇文章为大家展示了如何实现漂亮的Qt 登录界面,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。前言最近在使用Qt5,Qt Creator做一个管理系统类的项目,自然需要用到登录界面,故记录...
    99+
    2023-06-21
  • Ajax如何实现漂亮安全的登录界面
    这篇文章主要介绍Ajax如何实现漂亮安全的登录界面,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!登录界面是信息系统提供的必备的功能,是提供给用户提供维护信息的接口。接下来,我来带领大家打造一个漂亮、安全的登录界面,使...
    99+
    2023-06-08
  • 手把手教你实现Java第三方应用登录
    目录什么是OAuth2.0申请网站接入创建SpringBoot应用实现登录流程大家在自己做项目的时候有没有想过实现一个第三方应用登录呢?类似这种: 本篇文章就来聊一聊该如何实现...
    99+
    2024-04-02
  • Android之登录页的等待页面,AVI(手把手教你写)
    Android之登录页的等待页面,AVI(手把手教你写) 话不多说,先看效果(不会上传视频,就看照片吧) 3,使用,在MainAc...
    99+
    2022-06-06
    Android
  • 手把手教你使用TensorFlow2实现RNN
    目录概述权重共享计算过程:案例数据集RNN 层获取数据完整代码概述 RNN (Recurrent Netural Network) 是用于处理序列数据的神经网络. 所谓序列数据, 即...
    99+
    2024-04-02
  • 手把手教你实现PyTorch的MNIST数据集
    目录概述 获取数据 网络模型 train 函数 test 函数 main 函数 完整代码:概述 MNIST 包含 0~9 的手写数字, 共有 60000 个训练集和 10000 个...
    99+
    2024-04-02
  • 【Linux】手把手教你实现udp服务器
    网络套接字~ 文章目录 前言一、udp服务器的实现总结 前言 上一篇文章中我们讲到了很多的网络名词以及相关知识,下面我们就直接进入udp服务器的实现。 一、udp服务器的实现 首先我们需要创建五个文件(文件名可以自己命...
    99+
    2023-08-31
    c++ 后端 linux udp 服务器 网络协议 运维
  • 手把手教你vue实现动态路由
    目录1、什么是动态路由?2、动态路由的好处3、动态路由如何实现总结1、什么是动态路由? 动态路由,动态即不是写死的,是可变的。我们可以根据自己不同的需求加载不同的路由,做到不同的实现...
    99+
    2024-04-02
  • 手把手教你Vue3实现路由跳转
    目录一、安装 vue-router二、新建 vue 页面2.1 login.vue2.2 register.vue三、新建路由文件3.1 新建 index.js3.2 新建 rout...
    99+
    2024-04-02
  • 用Python手把手教你实现2048小游戏
    目录一、开发环境二、环境搭建三、原理介绍四、效果图一、开发环境 Python版本:3.6.4 相关模块: pygame模块; 以及一些Python自带的模块。 二、环境搭建 安装Python并添加到环境变量,pip安...
    99+
    2022-06-02
    Python 2048小游戏 python游戏
  • 手把手教你实现Android编译期注解
    详细阐述了实现一个Android编译期注解sdk的步骤以及注意事项,并简要分析了运行时注解以及字节码技术在生成代码上与编译期注解的不同与优劣 一、编译期注解在开发中的重要性 从早期令...
    99+
    2024-04-02
  • 手把手教你实现一个 Python 计时器
    为了更好地掌握 Python 计时器的应用,我们后面还补充了有关Python类、上下文管理器和装饰器的背景知识。因篇幅限制,其中利用上下文管理器和装饰器优化 Python 计时器,将在后续文章学习,不在本篇文章范围内。Python 计时器首...
    99+
    2023-05-14
    Python 编程语言 计时器
  • CSS动画教程:手把手教你实现翻页特效
    CSS动画教程:手把手教你实现翻页特效,需要具体代码示例CSS动画是现代网站设计中必不可少的一部分。它可以为网页增添生动感,吸引用户的注意力,并且提高用户体验。其中一种常见的CSS动画效果就是翻页特效。在这篇教程中,我将带领大家一步一步实现...
    99+
    2023-10-24
    CSS动画 翻页特效 手把手教程
  • CSS动画教程:手把手教你实现震动特效
    引言:在现代Web开发中,动画效果的应用越来越广泛。CSS动画是一种简单而强大的实现动画效果的方法。本文将带您一起学习如何使用CSS动画实现震动特效,并提供具体的代码示例。一、了解CSS动画基础知识在使用CSS动画之前,我们需要了解一些基础...
    99+
    2023-10-21
    CSS动画 手把手教程 震动特效
  • CSS动画教程:手把手教你实现旋转特效
    引言:CSS动画是现代网页设计的重要组成部分之一,通过CSS动画可以为网页增加交互性和视觉吸引力。本文将教你如何使用CSS实现一个简单而漂亮的旋转特效,通过简单的代码示例,让你轻松掌握该技巧。创建HTML结构:首先,我们需要创建一个HTML...
    99+
    2023-10-21
    CSS动画 手把手教 旋转特效
  • CSS动画教程:手把手教你实现脉冲特效
    引言:CSS动画是网页设计中常用的一种效果,它可以为网页增添活力和视觉吸引力。本篇文章将带您深入了解如何利用CSS实现脉冲特效,并提供具体的代码示例教您一步步完成。一、了解脉冲特效脉冲特效是一种循环变化的动画效果,通常用在按钮、图标或其他元...
    99+
    2023-10-21
    CSS动画 教程 脉冲
  • pytorch实战7:手把手教你基于pytorch实现VGG16
    手把手教你基于pytorch实现VGG16(长文) 前言 ​ 最近在看经典的卷积网络架构,打算自己尝试复现一下,在此系列文章中,会参考很多文章,有些已经忘记了出处,所以就不贴链接了,希望大家理解...
    99+
    2023-09-06
    pytorch 深度学习 python
  • 手把手教你用C语言实现三子棋
    目录1.设计简单菜单2.创建棋盘3.下棋过程的实现 3.1玩家下棋 3.2电脑下棋3.3判断输赢4.游戏源码总结1.设计简单菜单 相信大家在玩游戏时会发现,进入游...
    99+
    2024-04-02
  • 手把手教你用Matplotlib实现数据可视化
    目录介绍简单图形绘制快速上手自定义X/Y轴图表实现汇总正弦曲线图柱状图散点图饼图量场图等高线图图形样式折线图散点图饼图组合图形样式图形位置figure对象subplots对象规范绘图...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作