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

一.开始创建项目

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_OBJECTpublic: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.mzph.cn/news/127317.shtml

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

相关文章

git生成gitee和github两个不同的公钥

配置多个公钥 Windows 用户建议使用 Windows PowerShell 或者 Git Bash&#xff0c;在 命令提示符 下无 cat 和 ls 命令。 1、生成公钥文件&#xff1a; 通过命令 ssh-keygen 生成 SSH Key&#xff1a; ssh-keygen -t rsa -C "Gitee SSH Key" -f ~/.ssh/gitee_be…

【Unity ShaderGraph】| 快速制作一个 抖动效果

前言 【Unity ShaderGraph】| 快速制作一个 抖动效果一、效果展示二、UV抖动效果三、应用实例 前言 本文将使用ShaderGraph制作一个抖动效果&#xff0c;可以直接拿到项目中使用。对ShaderGraph还不了解的小伙伴可以参考这篇文章&#xff1a;【Unity ShaderGraph】| Shader Gr…

dash--项目的前端展示简单基础

1.前置工作 创建虚拟环境&#xff1a; sudo apt-get install python3-venv # 安装 python3 -m venv venv # 在本目录下创建venv虚拟环境&#xff08;也是一个文件夹。如果用不到这个虚拟环境以后就rm -rf venv&#xff09; source venv/bin/activate # 激活虚拟环境临时使用清华…

poi兴趣点推荐数据集介绍

介绍 foursquare数据集包含2153471个用户&#xff0c;1143092个场所&#xff0c;1021970个签到&#xff0c;27098490个社交关系以及用户分配给场所的2809581评级&#xff0c;我们常用的是根据NYC和TKY都是从该数据集中抽取出来的。 下载地址&#xff1a;https://sites.google.…

D盘清空了怎么还原?3个恢复技巧大公开!

“由于我的文件一般都是保存在c盘的&#xff0c;d盘里没有什么文件&#xff0c;于是我在清理电脑时就把d盘清空了&#xff0c;但我突然想起有一个重要的文件夹在d盘中&#xff0c;现在还有办法找回这些文件吗&#xff1f;” D盘作为电脑的一个重要磁盘&#xff0c;有时候我们也…

损失函数总结(十三):RSELoss、MAPELoss

损失函数总结&#xff08;十三&#xff09;&#xff1a;RSELoss、MAPELoss 1 引言2 损失函数2.1 RSELoss2.2 MAPELoss 3 总结 1 引言 在前面的文章中已经介绍了介绍了一系列损失函数 (L1Loss、MSELoss、BCELoss、CrossEntropyLoss、NLLLoss、CTCLoss、PoissonNLLLoss、Gaussia…

最新ai系统ChatGPT商业运营版网站源码+支持GPT4.0/支持AI绘画+已支持OpenAI GPT全模型+国内AI全模型+绘画池系统

一、AI创作系统 SparkAi创作系统是基于OpenAI很火的ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统&#xff0c;支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如…

5.1 运输层协议概述

思维导图&#xff1a; 前言&#xff1a; 第5章 运输层笔记 1. 概览 主要内容&#xff1a;介绍运输层协议的特点、进程间通信、端口、UDP和TCP协议、可靠传输、TCP报文段的首部格式、TCP的关键概念&#xff08;如滑动窗口、流量控制、拥塞控制和连接管理&#xff09;。重要性…

当函数参数为一级指针,二级指针

当函数参数为一级指针&#xff0c;二级指针 在讲述内容之前&#xff0c;先讲四点重要知识 1.当传入参数时&#xff0c;函数形参会立即申请形参的内存空间&#xff0c;函数执行完毕后&#xff0c;形参的内存空间立即释放掉。 1.指针是存放其他变量地址的变量。指针有自己的内…

任正非说:人家问我:“你怎么一天到晚游手好闲?”我说我是管长江的堤坝的。

你好&#xff01;这是华研荟【任正非说】系列的第26篇文章&#xff0c;让我们聆听任正非先生的真知灼见&#xff0c;学习华为的管理思想和管理理念。 一、我们不是靠人来领导这个公司&#xff0c;我们用规则的确定性来对付结果的不确定。人家问我&#xff1a;“你怎么一天到晚游…

HarmonyOS UI 开发

引言 HarmonyOS 提供了强大的 UI 开发工具和组件&#xff0c;使开发者能够创建吸引人的用户界面。本章将详细介绍在 HarmonyOS 中应用 JS、CSS、HTML&#xff0c;HarmonyOS 的 UI 组件以及如何自定义 UI 组件。 目录 JS、CSS、HTML 在 HarmonyOS 中的应用HarmonyOS 的 UI 组…

基于单片机设计的自动门控制系统

一、项目介绍 随着科技的不断发展&#xff0c;自动门成为公共场所、商业建筑和住宅社区等地的常见设施。自动门的出现使得进出门的操作更加便捷&#xff0c;提高了人们的生活质量和工作效率。为了实现自动门的开关控制&#xff0c;本项目基于单片机设计了一套自动门控制系统。…

数据结构───链表

花费一个周时间学完了链表&#xff08;的一部分&#xff09;&#xff0c;简单总结一下。 链表的学习离不开画图&#xff0c;将其抽象成一种逻辑模型&#xff0c;可以减少思考时间&#xff0c;方便理解。 链表大致分为8种结构&#xff0c;自己学习并实现了两种结构&#xff0c;也…

ubuntu无网络连接,没有网络标识,快速解决方法

在这里插入代码片当我们装虚拟机的时候&#xff0c;需要用到网络时发现没有网络连接&#xff0c;且右上角没有网络标识符&#xff0c;这时只需要简单的输入一下三个命令即可 sudo nmcli networking offsudo nmcli networking onsudo service network-manager restart然后重启客…

问题 D: 免费馅饼(类数塔问题)

免费馅饼 都说天上不会掉馅饼&#xff0c;但有一天gameboy正走在回家的小径上&#xff0c;忽然天上掉下大把大把的馅饼。说来gameboy的人品实在是太好了&#xff0c;这馅饼别处都不掉&#xff0c;就掉落在他身旁的10米范围内。馅饼如果掉在了地上当然就不能吃了&#xff0c;所以…

【DriveGPT学习笔记】自动驾驶汽车Autonomous Vehicle Planning

原文地址&#xff1a;DriveGPT - Lei Maos Log Book 自动驾驶汽车的核心软件组件是感知、规划和控制。规划是指在给定场景或一系列场景的情况下为自动驾驶汽车制定行动计划的过程&#xff0c;以实现安全和理想的自动驾驶。 用于规划的场景是从感知软件组件获得的。计划的行动将…

centos 7 kafka2.6单机安装及动态认证SASL SCRAM配置

目录 1.kfaka安装篇 1.1 安装jdk 1.2安装kafka 2.安全篇 2.1 kafka安全涉及3部份&#xff1a; 2.2 Kafka权限控制认证方式 2.3 SASL/SCRAM-SHA-256 配置实例 2.3.1 创建用户 2.3.2 创建 JAAS 文件及配置 3.测试 3.1 创建测试用户 3.2 配置JAAS 文件 3.2.1 生产者配…

arcgis删除细长图斑的方法

1、有一张图斑数据如下&#xff1a; 如上图&#xff0c;有很多细长的面要素&#xff0c;需要保留的仅是图中的块状要素。 2、首先要将被合并的要素进行拆分&#xff0c;具体拆分步骤如下&#xff1a; 将所有要素选中&#xff0c;点击高级编辑中的拆分按钮。 3、拆分后图斑就…

信号、进程、线程、I/O介绍

文章目录 信号进程进程通信线程可/不可重入函数线程同步互斥锁条件变量自旋锁读写锁 I/O操作阻塞/非阻塞I/OI/O多路复用存储映射I/O 信号 信号是事件发生时对进程的通知机制&#xff0c;可以看做软件中断。信号与硬件中断的相似之处在于其能够打断程序当前执行的正常流程。大多…

C语言每日一题(23)兔子的序列

牛客网 BC159 兔子的序列 题目描述 描述 兔子发现了一个数字序列&#xff0c;于是开始研究这个序列。兔子觉得一个序列应该需要有一个命名&#xff0c;命名应该要与这个序列有关。由于兔子十分讨厌完全平方数&#xff0c;所以兔子开创了一个新的命名方式&#xff1a;这个序列…