Qt实现的自定义登录框连接MySQL(完整的实现过程)

news2024/12/28 2:33:15

一.开始创建项目

1.创建Qt窗口应用项目:

2.输入文件名、选择项目将要保存的地址

3.构造系统选择qmake

4.类名使用默认的就好,点击继续完成项目的创建

5.创建好的项目如下

二.创建一个资源管理文件

三.创建一个登录对话框窗口

1.选择一个ui界面类

2.选择Dialog without Buttons

4.命名如下

5.在loginButton里面放入两个lineEdit、一个PushButton、一个Label,并做如下布局

6.创建一个login.css文件在资源管理文件res文件下

        先在工程项目的文件里面创建一个新文件夹css,用来保存.css文件

创建css文件

7.在mian.cpp中写如下代码设置打开窗口时,运行程序时是logindialog窗口先打开

#include "mainwindow.h"
#include <QApplication>
#include "logindialog.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    loginDialog login; //定义一个对话框窗口
    int ret = login.exec(); 
    if(QDialog::Accepted == ret){
        MainWindow w;
        w.show();
        return a.exec();
    }
    return ret;

}

 

四.设置登录框样式

1.在login.css文件中设置登录对话框的样式:

/*设置标题"账号登录"样式*/
QLabel#titleLabel{
    color:#12bb37; /*字体颜色*/
    font-size: 20px; /*字体大小*/
    font-family:Helvetica; /*字体集*/
}
/*设置登录按钮样式*/
QPushButton#loginButton{
    background:#12bb37; /*按钮颜色*/
    color:white; /*字体颜色*/
    border-radius:5px;/*按钮设置圆角*/
    border:none;  /*去掉按钮边框*/
    min-height:40px; /*设置按钮最小高度*/
    font-size:18px;/*设置字体大小*/
    font-family:Helvetica;/*字体集*/
}
/*设置单行编辑框样式*/
QLineEdit {
    color: #bfbfbf;  /*设置输入文本的颜色 */
    border-radius: 5px;/*按钮单行编辑框圆角*/
    min-height: 40px; /*设置单行编辑框最小高度*/
    border: 1px solid #eeeeee; /*设置单行编辑框边框大小为1px  无空隙 颜色为#eeeeee*/
    font-size: 14px; /*设置输入的字体大小*/
    font-family:Helvetica;/*字体集*/
}
/*设置单行编辑框焦点时样式*/
QLineEdit:focus {
    color: black;  /* 设置输入文本获取焦点后的颜色 */
    outline: none;
    border:none;
    border-width:0;
/*    border-style:outset;*/
    border: 1px solid #12bb37;
}

2.在logon.cpp文件中加载login.css样式表,初始化QLineEdit,并重写paintEvent函数绘制窗口圆角

//logindialog.h
#ifndef LOGINDIALOG_H
#define LOGINDIALOG_H

#include <QDialog>

namespace Ui {
class loginDialog;
}

class loginDialog : public QDialog
{
    Q_OBJECT

public:
    explicit loginDialog(QWidget *parent = nullptr);
    ~loginDialog();
    void initEdit();
protected:
    void paintEvent(QPaintEvent *event) override;

private:
    Ui::loginDialog *ui;
};

#endif // LOGINDIALOG_H
//logindialog.cpp
#include "logindialog.h"
#include "ui_logindialog.h"
#include <QFile>
#include <QPainter>
loginDialog::loginDialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::loginDialog)
{
    ui->setupUi(this);

    setWindowFlags(Qt::FramelessWindowHint); //设置窗口无边框
    setFixedSize(350,390); //固定登录对话框的窗口大小
    //加载css样式表
    QString qss;
    QFile file(":/css/login.css");
    if (file.open(QFile::ReadOnly)) {
        qss = QLatin1String(file.readAll());
        qApp->setStyleSheet(qss);
        file.close();
    }
    ui->usernameEdit->setAttribute(Qt::WA_MacShowFocusRect, 0); //去掉默认选中usernameEdit就会出现的蓝色边框
    ui->passwordEdit->setAttribute(Qt::WA_MacShowFocusRect, 0); //去掉默认选中passwordEdit就会出现的蓝色边框
    ui->passwordEdit->setEchoMode(QLineEdit::Password); //设置密码输入显示为圆点(并不是加密)
    setAttribute(Qt::WA_TranslucentBackground);  //设置窗口背景为透明,然后重绘窗口
    initEdit(); //初始化lineEdit
}


loginDialog::~loginDialog()
{
    delete ui;
}
//初始化lineEdit
void loginDialog::initEdit(){
    ui->usernameEdit->setPlaceholderText(" 请输入用户名"); //设置占位符文本提示用户输入用户名
    ui->usernameEdit->setFocusPolicy(Qt::ClickFocus); // 点击获得焦点
    ui->passwordEdit->setPlaceholderText(" 请输入密码"); //设置占位符文本,提示用户输入密码
    ui->passwordEdit->setFocusPolicy(Qt::ClickFocus); // 点击获得焦点
}
//重写绘画事件-重绘窗口并设置窗口圆角
void loginDialog::paintEvent(QPaintEvent *event){
    Q_UNUSED(event);
    QPainter painter(this);
    painter.setRenderHint(QPainter::Antialiasing,true); //抗锯齿
    painter.setBrush(QColor(Qt::white));// 设置画刷颜色
    painter.setPen(QColor(Qt::white)); //设置画笔颜色
    painter.drawRoundedRect(rect(),12,12); //画圆角矩形
}

2.运行效果

五.实现登录框可移动和自定义关闭窗口按钮

1.重写对话框的鼠标按下(mousePressEvent)、鼠标移动(mouseMoveEvent)、鼠标释放(mouseReleaseEvent)事件,实现在对话框中按下鼠标左键后移动鼠标可以实现对话框在屏幕上进行拖

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【字符指针等_例题详解】

文章目录 前言例题一 &#xff1a;下面关于“指针”的描述不正确的是例题二&#xff1a;下面代码描述正确的是例题三&#xff1a;关于数组指针描述正确的是例题四&#xff1a;下面哪个是数组指针例题五&#xff1a; 下面哪个是函数指针例题六&#xff1a; 定义一个函数指针&…

python实现Excel自动化办公

准备工作 安装相关模块 pip install openpyxl lxml pillow 基本定义 工作簿&#xff1a;一个电子表文件为一个工作簿 活动表&#xff1a;用户当前查看的表活关闭Excel最后查看的表 sheet表 单元格 Excel数据读取操作 打开工作簿并创建一个对象&#xff1a; wb openpyxl.loa…

【2021ICPC沈阳】EFBJHL

不知道为什么感觉以前的场要比现在的简单一点&#xff0c;虽然这场VP虽然题数到了但是还是差点罚时.... 现在的有些场感觉连签到都要签半天&#xff0c;比如前几天的ICPC西安和CCPC桂林&#xff0c;看了下题都不简单 这场甚至银牌题都没什么思维&#xff0c;只需要算法的板子…

mmcv中出现TypeError: FormatCode() got an unexpected keyword argument ‘verify‘

最近安装Co-DETR项目环境时遇到如下的问题 主要是因为最新版的yapf&#xff08;0.40.2&#xff09;中删除了verify的验证功能 将其降级为旧版即可&#xff1a; pip install yapf0.40.0

照片去文字水印怎么弄?这三个方法快学起来

照片去文字水印怎么弄&#xff1f;你有没有遇到过这样的烦恼呢&#xff1f;我经常在网上找一些好看的照片来做头像或者壁纸&#xff0c;但是总是遇到一些带水印或者不想要的文字的照片&#xff0c;影响了整体的美观度让人很头疼&#xff0c;每次重新找又得花费不少时间和精力&a…

真心话坦白局系统源码

它具有匿名信息的神秘感 但又会给你一点小提示 能让你有无限挖掘下去的好奇感 也能让你说出那些不敢说出口的话 敢来一场坦白局吗&#xff01; 坦白局这个功能类似于悄悄话&#xff0c;只不过是匿名的悄悄话。 有时候我们有些话是开不了口的&#xff0c;坦白局给了我们一个…

每日汇评:黄金多头重回2000美元,接下来会发生什么?

受地缘政治因素影响&#xff0c;金价守住了上周五2000美元上方的强劲涨幅&#xff1b; 美元持稳&#xff0c;因为美国债券市场的行动是美联储本周的关键&#xff1b; 由于可能出现牛十字&#xff0c;黄金价格有望进一步上涨&#xff0c;牛旗仍在图表中延续&#xff1b; 继上周五…

vue3 vue3-particles粒子使用方法

注意&#xff1a;这个vue3-particles和particles.vue3有些许差别的&#xff08;安装、引入方式&#xff09; particles.vue3示例&#xff1a;vue3 使用particles插件粒子_vueparticles_余温无痕的博客-CSDN博客 下面是vue3-particles使用介绍 先看效果&#xff0c;背景图是自…

Qt3D绘制旋转立方体

近期用了款叫DesktopSpace&#xff0c;也想实现一下这款软件实现的效果 具体实现步骤: 使用Qt3D绘制个旋转的立方体&#xff08;一&#xff09;使用快捷键控制立方体显示面&#xff08;二&#xff09;创建6个人虚拟桌面&#xff0c;截取不同虚拟桌面&#xff0c;显示在不同的面…

15、SpringCloud -- 延迟消息、异步下单失败处理方案

目录 延迟消息需求理解:思路:代码:发送延迟消息消费延迟消息:1、订单支付状态:2、回补真实库存:3、回补预库存:4、修改本地标识:测试:清除MQ数据:期望结果:实际结果:问题:异步下单失败需求1:代码:发送消息:消费消息:测试:需求2:延迟消息 需求理解: 用户成…

从制造到创造:揭示中国制造的基础瓶颈及其突破

中国制造的产品遍布全球&#xff0c;但很多人认为中国制造的产品缺乏基础&#xff0c;这是为什么呢&#xff1f;本文将从制造的基础入手&#xff0c;探讨中国制造缺乏基础的原因。 一、制造的基础 制造的基础是工艺&#xff0c;工艺的基础包括三个方面&#xff1a;基础材料的研…

如何将word格式的文档转换成markdown格式的文档

如何将word格式的文档转换成markdown格式的文档 前言 A. 介绍Markdown和Word格式文档 什么是Markdown&#xff1f; Markdown是一种轻量级标记语言&#xff0c;旨在简化文本格式化和排版的过程。它以纯文本形式编写&#xff0c;通过使用简单的标记语法&#xff0c;使文档更具…

HarmonyOS开发:基于http开源一个网络请求库

前言 网络封装的目的&#xff0c;在于简洁&#xff0c;使用起来更加的方便&#xff0c;也易于我们进行相关动作的设置&#xff0c;如果&#xff0c;我们不封装&#xff0c;那么每次请求&#xff0c;就会重复大量的代码逻辑&#xff0c;如下代码&#xff0c;是官方给出的案例&am…

0003net程序设计-net旅游景点推荐系统

文章目录 摘 要目录系统设计开发环境 摘 要 随着信息技术和网络技术的飞速发展&#xff0c;人类已进入全新信息化时代&#xff0c;传统管理技术已无法高效&#xff0c;便捷地管理信息。为了迎合时代需求&#xff0c;优化管理效率&#xff0c;各种各样的管理系统应运而生&#…

【IDEA】设置sql提示

第一步&#xff1a;注入SQL语言 1.首先选择任意一条sql语句&#xff0c;右击&#xff0c;选择 ‘显示上下文操作’ 2.选择 ‘注入语言或引用’ 3. 往下翻&#xff0c;找到MySQL 第二步&#xff1a;配置MySQL数据库连接 1.首先点击侧边的数据库&#xff0c;再点击上面的加号 2…

antv/g6使用教程及图配置

介绍 G6 是一款由蚂蚁金服 AntV 团队开发的 JavaScript 图形引擎&#xff0c;用于构建各种交互式可视化图形&#xff0c;包括但不限于图表、网络拓扑图、关系图、流程图等。无论是数据分析、决策支持&#xff0c;还是信息可视化&#xff0c;G6 都是一个强大的工具。 以下是 G…

python采集电商jd app商品详情数据(2023-10-30)

一、技术要点&#xff1a; 1、cookie可以从手机app端用charles抓包获取&#xff1b; 2、无需安装nodejs&#xff0c;纯python源码&#xff1b; 3、商品详情接口为&#xff1a;functionId "wareBusiness"&#xff1b; 4、clientVersion "10.1.4"同…

自学C语言的最恐怖的地方是什么?

自学C语言的最恐怖的地方是什么&#xff1f; 当年在网吧学C&#xff0c;人家在玩游戏&#xff0c;我在敲代码&#xff0c;基本上从9点敲到1点&#xff0c;然后再开始玩游戏。。。当时不是装逼&#xff0c;就是觉得有意思&#xff0c;而且当时计算机的确是一门很高大上的职业。…

redis加入window服务及删除

1、命令redis-server.exe --service-install redis.windows.conf&#xff0c;在服务中可配置自动启动 删除redis服务&#xff0c;先停止redis服务运行&#xff0c;管理员cmd模式&#xff0c;sc delete "redis" ,

mysql 间隙锁

mysql 默认是可重复读的隔离级别&#xff0c;这种默认会有幻读&#xff0c;幻读指的什么现象呢&#xff0c;就是在同一个事物中前后两次查到的结果不一致&#xff0c;那么mysql是怎么解决幻读的呢&#xff0c;这就是mvcc mvcc 什么是mvcc呢&#xff0c;就是多版本并发控制&am…