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

前言

最近在使用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 登录界面内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • pyqt5利用pyqtDesigner实现登录界面

    本文实例为大家分享了pyqt5利用pyqtDesigner实现登录界面的具体代码,供大家参考,具体内容如下 为便于操作 界面和逻辑分离 逻辑类: import sys import pymysql from loginUI import * //导入 from PyQt5.QtWidgets import * from PyQt5 import QtWidgets, QtCore, QtGui from PyQt5.QtCore import * from PyQt5.QtGui import

  • PyQt5+Caffe+Opencv搭建人脸识别登录界面

    最近开始学习Qt,结合之前学习过的caffe一起搭建了一个人脸识别登录系统的程序,新手可能有理解不到位的情况,还请大家多多指教. 我的想法是用opencv自带的人脸检测算法检测出面部,利用caffe训练好的卷积神经网络来提取特征,通过计算当前检测到的人脸与已近注册的所有用户的面部特征之间的相似度,如果最大的相似度大于一个阈值,就可以确定当前检测到的人脸对应为这个相似度最大的用户了. ###Caffe人脸识别 因为不断有新的用户加入,然而添加新用户后重新调整CNN的网络结构太费时间,所以不能用CN

  • PyQt5设置登录界面及界面美化的实现

    写在前面 前一段时间博主刷了半个多月的LeetCode算法题,刷的归类为简单的那些题,做到自己简直要怀疑人生.想着人生在世,何苦这么为难自己呢,何不做点自己擅长的东西.想到博主还有个项目没做完呢,于是开始捣鼓起来.项目的最终成果是要写一个软件,把所有研究的内容可视化的展示出来,研究的内容都写的差不多了,还差个登录界面,于是就开始元气满满的干起来. 先上编译环境: Python3.7 pycharm2020专业版 PyQt5 博主习惯用Spyder做编译器,但如果做大项目,最好还是用pycharm

  • python通过PyQt5实现登录界面的示例代码

    目录 1. pyQt5简单使用 安装 界面化操作 2.开始实现登录界面 今天为大家介绍一个利用开发登录界面模板,基于pyqt5库,pyqt5这也一个PythonGUI界面开发的库,非常强 本例,展示了通过登录界面打开主界面的实现方式. 在开始实现登录界面前,先给大家普及一下PyQt5的安装以及使用 1. pyQt5简单使用 安装 pip install PyQt5 pip3.5 install pyqt5-tools 界面化操作 1.在win+R中输入designer并敲回车,即可启动Desig

  • pyqt5实现登录界面的模板

    本文实例为大家分享了pyqt5登录界面的实现模板,供大家参考,具体内容如下 说明 本例,展示了通过登录界面打开主界面的实现方式. 其中,登录的账号与密码判断都比较简单,请大家根据自己需要,自行完善补充. [如下代码,完全复制,直接运行,即可使用] import sys from PyQt5.QtWidgets import * from PyQt5.QtCore import * from PyQt5.QtGui import * ################################

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

    前言 最近在使用Qt5,Qt Creator做一个管理系统类的项目,自然需要用到登录界面,故记录一下登录界面的制作.其中一些功能的实现也得益于之前Qt5基础视频不规则窗口部分的学习. 手把手教你实现漂亮的登录界面 首先看一下成品. 第一步.新建一个Qwidget项目 没必要用qmainwindow,不需要那些菜单,一般用qwidget就可以,注意勾选ui. 第二步.添加界面组件 1.添加容器 调整容器为合适大小,同时调整整个画布为合适大小. 2.添加按钮,标签,文字组件 构思: 账号密码部分使用

  • 手把手教你实现Java第三方应用登录

    目录 什么是OAuth2.0 申请网站接入 创建SpringBoot应用 实现登录流程 大家在自己做项目的时候有没有想过实现一个第三方应用登录呢?类似这种: 本篇文章就来聊一聊该如何实现第三方应用登录. 什么是OAuth2.0 OAuth是一项协议,它为用户资源的授权提供了一个安全.开放而简易的标准,OAuth的授权不会使第三方触及到用户的账号信息(比如密码),因此OAuth是相对安全的.而OAuth2.0就是OAuth的延续,不过2.0更加关注客户端开发者的简易性. 申请网站接入 常见的第三方

  • 手把手教你用python抢票回家过年(代码简单)

    首先看看如何快速查看剩余火车票? 当你想查询一下火车票信息的时候,你还在上12306官网吗?或是打开你手机里的APP?下面让我们来用Python写一个命令行版的火车票查看器, 只要在命令行敲一行命令就能获得你想要的火车票信息!如果你刚掌握了Python基础,这将是个不错的小练习. 接口设计 一个应用写出来最终是要给人使用的,哪怕只是给你自己使用.所以,首先应该想想你希望怎么使用它?让我们先给这个小应用起个名字吧,既然及查询票务信息,那就叫它tickets好了.我们希望用户只要输入出发站,到达站以

  • 手把手教你写一个微信小程序(推荐)

    需求 小程序语音识别,全景图片观看,登录授权,获取个人基本信息 一:基础框架 官方开发文档:https://developers.weixin.qq.com/miniprogram/dev/ (其实官方文档写的很清楚了) 1.跟着官方文档一步一步来,新建一个小程序项目就好 2.然后呢,毕竟默认的只是基本骨架,肌肉线条还是要自己填的 app.json 是当前小程序的全局配置 小程序的所有页面路径.界面表现.网络超时时间.底部 tab 需求一:底部tab,我们要像原生APP那样要有是三个常驻的按钮,

  • 手把手教你在腾讯云上搭建hive3.1.2的方法

    环境准备 所有操作开始前,先确定hadoop版本已经装好.具体可以看我的另一篇博客 搭建hadoop3.x mysql安装 先把安装包放到software文件夹,并解压到mysql-lib中 [root@master software]# ll 总用量 1422372 -rw-r--r-- 1 root root 312850286 7月 2 15:00 apache-hive-3.1.2-bin.tar.gz -rw-r--r-- 1 root root 338075860 7月 2 09:3

  • 手把手教你搭建腾讯云服务器入门(图文教程)

    本文由博主 威威喵 原创 博客主页:https://blog.csdn.net/smile_running 背景 暑假期间,愁着无聊但也不能荒废学业吧,毕竟以后想靠技术混口饭吃!为了实施自己的计划,特地挑了一个便宜的云服务器来用作自己的后台:这不是学生狗没钱嘛,所以我就挑了一个腾讯云服务器.虽说配置很低,但够我们玩就行.因为想写一个电商App,数据总不能从本地数据库来吧,那样也太没水平了!因为自己也会一点Java Web 服务器,索性租了一个云服务器,接口啥的自己写,说干就干吧. 由于本人是在校

  • 手把手教你AspNetCore WebApi认证与授权的方法

    前言 这几天小明又有烦恼了,之前给小红的接口没有做认证授权,直接裸奔在线上,被马老板发现后狠狠的骂了一顿,赶紧让小明把授权加上.赶紧Baidu一下,发现大家都在用JWT认证授权,这个倒是挺适合自己的. 什么是Token Token是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个Token便将此Token返回给客户端,以后客户端只需带上这个Token前来请求数据即可,无需再次带上用户名和密码. 什么是JWT Json web token (JWT),是为了在网

  • 手把手教你SpringBoot轻松整合Minio

    前言 使用Spring Boot 可以非常方便.快速搭建项目,使我们不用关心框架之间的兼容性,适用版本等各种问题,我们想使用任何东西,仅仅添加一个配置就可以. 提示:以下是本篇文章正文内容,下面案例可供参考 一.技术介绍 1.Minio是什么? MinIO 是一个基于Apache License v2.0开源协议的对象存储服务.它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片.视频.日志文件.备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5

  • 合成大西瓜开发源码手把手教你运行和部署大西瓜游戏项目(附源码)

    最近合成大西瓜非常火,很多编程爱好者将大西瓜改成了各种版本,非常魔性,哈哈. 如果你也想魔改大西瓜,或者想研究一下项目怎么玩的,下面的教程从下载到游戏项目部署一条龙搞定. 步骤一:下载大西瓜源代码 贴心的我已经将各种版本的代码整理到百度网盘了,大家可以按需下载: 链接: https://pan.baidu.com/s/1DfRdj2s2yGW_XbQhhjSM1w 提取码: 4t3d 步骤二:尝试运行大西瓜游戏项目 下载的源码结构如下图 如果你双击打开 index.html 文件可能卡在98%或

  • 手把手教你用Java实现一套简单的鉴权服务

    前言 时遇JavaEE作业,题目要求写个简单web登录程序,按照老师的意思是用servlet.jsp和jdbc完成.本着要么不做,要做就要做好的原则,我开始着手完成此次作业(其实也是写实训作业的用户鉴权部分),而之前写项目的时候也有相关经验,这次正好能派上用场. 一.何为鉴权服务 引用百度百科的话说 鉴权(authentication)是指验证用户是否拥有访问系统的权利. 鉴权包括两个方面: 用户鉴权,网络对用户进行鉴权,防止非法用户占用网络资源. 网络鉴权,用户对网络进行鉴权,防止用户接入了非

随机推荐