Qt的一个基本用户登录界面编写|| 从0搭建QT的信号与槽的应用案例 ||Qt样式表的应用

目录

1.新建1个qt项目,基类选中QWidget

2.ui文件布局

3.头文件

3.1 explicit的作用

具体解释

示例

4.cpp源文件

5.信号与槽的应用

6.qt实现效果

7.qt样式表的应用


1.新建1个qt项目,基类选中QWidget

2.ui文件布局

3.头文件

#ifndef WIDADMINLOGIN_H
#define WIDADMINLOGIN_H#include <QWidget>
#include <QMouseEvent>QT_BEGIN_NAMESPACE
namespace Ui { class WidAdminLogin; }
QT_END_NAMESPACEclass WidAdminLogin : public QWidget
{Q_OBJECTpublic:explicit WidAdminLogin(QWidget *parent = nullptr);  //explicit 当构造函数被标记为 explicit 时,编译器会禁止使用该构造函数进行隐式类型转换。这意味着你不能用一个参数来初始化一个对象,除非你明确使用构造函数。~WidAdminLogin();//  设置用户名和密码void OnSetUserAndPwd(QString strUser, QString strPwd);signals: //发送的信号//  进入功能选择页面//void signalInterAdminFunction();private slots: //只有该类使用的槽函数void on_btnLogin_clicked();private:Ui::WidAdminLogin *ui;
};
#endif // WIDADMINLOGIN_H

3.1explicit的作用

       在 C++ 中,explicit 关键字用于构造函数,以防止隐式类型转换。它的主要作用是确保构造函数只能被显式调用,而不能通过其他类型的对象进行隐式转换。这在某些情况下可以防止错误或意外的行为。

具体解释

  1. 防止隐式转换: 当你定义一个构造函数为 explicit 时,如果想要使用该构造函数进行对象初始化,必须显式调用它。例如,如果你有一个类 A,并定义了一个接受 int 类型参数的构造函数,如果这个构造函数不是 explicit,你可以这样写:

    A a = 5;  // 这里会隐式调用 A(int)

    然而,如果构造函数是 explicit,使用上述代码将导致编译错误。你必须显式调用构造函数:

    A a(5);  // 正确,显式调用构造函数
    
  2. 防止潜在的错误: 有时候,隐式转换可能会导致不易察觉的错误。例如,你可能在代码中不经意间传递了一个错误的类型,结果编译器会默默地进行转换,这可能导致逻辑上的错误。使用 explicit 可以强制程序员显式地表明他们的意图。

  3. 适用场景

    • 当你有一个构造函数接受一个参数,并且你不希望它被用于隐式转换时,使用 explicit 是一个好习惯。
    • 当你的类设计中不希望用户通过简单的类型赋值来创建对象时,使用 explicit 可以增强代码的可读性和安全性。

示例

        以下是一个使用 explicit 的简单示例:

class MyClass {
public:explicit MyClass(int value) {// 构造函数实现}
};void func(MyClass obj) {// 函数实现
}int main() {MyClass a(5); // 正确MyClass b = 5; // 错误:编译失败,因为构造函数是 explicitfunc(5); // 错误:编译失败,因为隐式转换被禁止
}

        总之,使用 explicit 可以帮助你控制对象的创建方式,增强代码的可读性和安全性。

4.cpp源文件

#include "widadminlogin.h"
#include "ui_widadminlogin.h"WidAdminLogin::WidAdminLogin(QWidget *parent): QWidget(parent), ui(new Ui::WidAdminLogin)
{ui->setupUi(this);//ui->txtUser->setStyleSheet("QLineEdit {\nbackground-color: rgb(255, 255, 255);\nborder: 1px solid rgb(211, 211, 211);\n    color: rgb(0, 0, 0);\n    padding: 4px 4px;\n    text-align: center;\n    text-decoration: none;\n    \n    font-size: 14px;\n	font: 700 14pt;\nborder-radius:8px;\n}");//ui->txtPwd->setStyleSheet("QLineEdit {\nbackground-color: rgb(255, 255, 255);\nborder: 1px solid rgb(42, 140, 255);\n    color: rgb(0, 0, 0);\n    padding: 4px 4px;\n    text-align: center;\n    text-decoration: none;\n    \n    font-size: 14px;\n	font: 700 14pt;\nborder-radius:8px;\n}");connect(ui->btnLogin, &QPushButton::clicked, this, &WidAdminLogin::on_btnLogin_clicked);ui->labelUserPwdError->hide();ui->labelUserPwdSucess->hide();//  打开控件的事件过滤器//ui->txtUser->installEventFilter(this);//ui->txtPwd->installEventFilter(this);
}WidAdminLogin::~WidAdminLogin()
{delete ui;
}//  设置用户名和密码
void WidAdminLogin::OnSetUserAndPwd(QString strUser, QString strPwd)
{ui->txtUser->setText(strUser);ui->txtPwd->setText(strPwd);
}void WidAdminLogin::on_btnLogin_clicked()
{//  校验用户名和密码QString strPwd = ui->txtPwd->text();QString strUser = ui->txtUser->text();//当用户名为 "77" 且密码为 "123" 时才能登录成功if (strPwd != "123" || strUser != "77"){//  密码错误ui->labelUserPwdError->show();return;}else{ui->labelUserPwdSucess->setText("登录成功!");ui->labelUserPwdSucess->show();return;}//  进入功能选择页面//emit signalInterAdminFunction();
}

5.信号与槽的应用

connect(ui->btnLogin, &QPushButton::clicked, this,&WidAdminLogin::on_btnLogin_clicked);

该代码在点击按钮时实现按钮相应槽函数的响应

6.qt实现效果

当用户密码设置正确时,界面显示sucess,失败时界面显示账号密码错误

7.qt样式表的应用

        账号密码错误的样式是怎么设置的?

        答:右键设置样式表

QLabel {

border: 1 px; /* 设置 1 像素的黑色边框 */

color: rgb(255, 22, 22); /* 设置文本颜色为明亮的红色 */

padding: 4px 4px; /* 设置内边距为 4 像素 */

text-align: center;

text-decoration: none;

font-size: 9px;

font: 700 9pt; /* 设置字体为粗体

border-radius:8px; /* 设置边框圆角为 8 像素 */

}

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

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

相关文章

【Apache Paimon】-- 2 -- 核心特性 (0.9.0)

目录 1、实时更新 1.1、实时大批量更新 1.2、支持定义合并引擎 1.3、支持定义更新日志生成器 2、海量数据追加处理 2.1、append table 2.2、快速查询 3、数据湖功能&#xff08;类比&#xff1a;hudi、iceberg、delta&#xff09; 3.1、支持 ACID 事务 3.2、支持 Time…

webpack配置

4-3vue-loader测试_哔哩哔哩_bilibili 一.新建文件夹vue_todo&#xff0c;vscode打开 二.ctrl打开终端&#xff0c;输入npm init -y&#xff0c;快速生成一个默认的package.json文件 之后左边出现项目初始化文件package.json 三.接下来需要webpack完成打包&#xff0c;所以安装…

5.STM32之通信接口《精讲》之USART通信---实验串口接收程序

根据上节&#xff0c;我们一已经完成了串口发送程序的代码&#xff0c;并且深入的解析探索了串口的原理&#xff0c;接下来&#xff0c;Whappy小编将带领大家进入串口接收程序的探索与实验&#xff0c;并将结合上一节串口发送一起来完成串口的发送和接收实验。 上来两张图 上图…

leetcode 扫描线专题 06-leetcode.836 rectangle-overlap 力扣.836 矩形重叠

题目 矩形以列表 [x1, y1, x2, y2] 的形式表示&#xff0c;其中 (x1, y1) 为左下角的坐标&#xff0c;(x2, y2) 是右上角的坐标。 矩形的上下边平行于 x 轴&#xff0c;左右边平行于 y 轴。 如果相交的面积为 正 &#xff0c;则称两矩形重叠。 需要明确的是&#xff0c;只在…

ASP.NET MVC宠物商城系统

该系统采用B/S架构&#xff0c;使用C#编程语言进行开发&#xff0c;以ASP.NET MVC框架为基础&#xff0c;以Visual Studio 2019为开发工具&#xff0c;数据库采用SQL Server进行保存数据。系统主要功能包括登录注册、宠物展示、个人中心、我的订单、购物车、用户管理、宠物类别…

最优化方法_罚函数法例题

1 外点罚函数 算法1 外点罚函数法 给定初点&#xff0c;初始罚因子,放大系数&#xff0c;允许误差&#xff0c;置k1。以为初始点&#xff0c;求解无约束问题得最优解。如果,则停止计算&#xff0c;为约束问题的近似最优解&#xff1b;否 则&#xff0c;增大罚因子&#xff0c;令…

python调用MySql保姆级教程(包会的)

目录 一、下载MySql 二、安装MySql 三、验证MySql是否OK 1、MySQL控制台验证 2、命令提示符cmd窗口验证 四、Python调用MySql 4.1 安装pysql 4.2 使用pysql 4.2.1、连接数据库服务器并且创建数据库和表 4.2.2 、将人脸识别考勤系统识别到的数据自动填入到数据库的表单中…

【鸿蒙生态崛起,开发者有哪些机遇与挑战?】HarmonyOS NEXT 引领数字化未来

文章目录 前言一、HarmonyOS NEXT 特点与升级二、全面突破操作系统核心技术三、鸿蒙生态全面守护用户隐私四、鸿蒙生态的崛起与开发者机遇五、全新鸿蒙生态引领数字化未来小结 前言 鸿蒙系统不断发展&#xff0c;有与安卓、iOS 形成三足鼎立之势&#xff0c;且其在智能手机、智…

ssh无法连接Ubuntu

试了多次ssh都无法连接&#xff0c;明明可以上网 网卡、防火墙、端口都没有问题&#xff0c;就是连接不上 结果是这个版本Ubuntu镜像默认没有安装ssh服务 安装SSH服务&#xff1a;apt-get install openssh-server 开启SSH服务&#xff1a;/etc/init.d/ssh start 就可以连接…

基于Java Springboot外卖平台系统

一、作品包含 源码数据库设计文档万字PPT全套环境和工具资源部署教程 二、项目技术 前端技术&#xff1a;Html、Css、Js、Vue、Element-ui 数据库&#xff1a;MySQL 后端技术&#xff1a;Java、Spring Boot、MyBatis 三、运行环境 开发工具&#xff1a;IDEA/eclipse 数…

vue2动态导出多级表头表格

需求&#xff1a;导出多级表格&#xff0c;如下&#xff0c;每个人名对应的是不同的城市金钱和年龄&#xff0c;日期占俩行&#xff0c;需要根据数据进行动态展示 1.效果 2.关键代码讲解 2.1数据源 2.2所需插件 npm install xlsx 2.3关键代码 创建name组和date组&#xff0c…

散户持股增厚工具:智能T0算法交易

最近市场很多都说牛市&#xff0c;但是大多数朋友怎么来的又怎么吐出去了。这会儿我们用T0的智能算法交易又可以增厚我们的持仓收益。简单来说&#xff0c;就是基于用户原有的股票持仓&#xff0c;针对同一标的&#xff0c;配合智能T0算法&#xff0c;每天全自动操作&#xff0…

独立开发:一人公司模式下副业产品的全流程

在数字经济的浪潮下&#xff0c;越来越多的开发者选择成为自由职业者或创立一人公司&#xff0c;通过副业产品开发实现个人价值与经济收益的双重提升。本文将围绕一人公司模式下副业产品的设计、开发、运营及变现落地全流程&#xff0c;提供一套实战指南&#xff0c;帮助有志于…

SD模型微调之Textual Inversion和Embedding fine-tuning

​ &#x1f33a;系列文章推荐&#x1f33a; 扩散模型系列文章正在持续的更新&#xff0c;更新节奏如下&#xff0c;先更新SD模型讲解&#xff0c;再更新相关的微调方法文章&#xff0c;敬请期待&#xff01;&#xff01;&#xff01;&#xff08;本文及其之前的文章均已更新&a…

【Vue笔记】基于vue3 + element-plus + el-dialog封装一个自定义的dialog弹出窗口组件

这篇文章,介绍一下如何使用vue3+element-plus中的el-dialog组件,自己封装一个通用的弹出窗口组件。运行效果如下所示: 目录 1.1、父子组件通信 1.2、自定义VDialog组件(【v-model】模式) 1.2.1、编写VDialog组件代码 1.2.2、使用VDialog组件 1.2.3、运行效果 1.3、自…

Spring Cloud Alibaba [Gateway]网关。

1 简介 网关作为流量的入口&#xff0c;常用功能包括路由转发、权限校验、限流控制等。而springcloudgateway 作为SpringCloud 官方推出的第二代网关框架&#xff0c;取代了Zuul网关。 1.1 SpringCloudGateway特点: &#xff08;1&#xff09;基于Spring5&#xff0c;支持响应…

不完全微分PID控制算法

不完全微分PID控制算法是一种改进的PID控制方法&#xff0c;主要针对PID控制中的微分环节对高频噪声敏感的问题。通过对微分项进行优化和改造&#xff0c;减少其对噪声的放大作用&#xff0c;同时保留对系统动态变化的响应能力。 不完全微分PID控制原理 不完全微分的核心思想是…

DataOps for LLM 的数据工程技术架构实践

导读 在 LLM 蓬勃发展的今天&#xff0c;数据工程已成为支持大规模 AI 模型训练的基石。DataOps 作为数据工程的重要方法论&#xff0c;通过优化数据集成、转换和自动化运维&#xff0c;加速数据到模型的闭环流程。本文聚焦新一代数据 & AI 集成工具- Apache SeaTunnel 在…

go-zero(七) RPC服务和ETCD

go-zero 实现 RPC 服务 在实际的开发中&#xff0c;我们是通过RPC来传递数据的&#xff0c;下面我将通过一个简单的示例&#xff0c;说明如何使用go-zero框架和 Protocol Buffers 定义 RPC 服务。 一、生成 RPC项目 在这个教程中&#xff0c;我们根据user.api文件&#xff0…

【c++丨STL】list模拟实现(附源码)

&#x1f31f;&#x1f31f;作者主页&#xff1a;ephemerals__ &#x1f31f;&#x1f31f;所属专栏&#xff1a;C、STL 目录 前言 一、节点、迭代器以及函数声明 二、list功能实现 1. 节点 2. 迭代器 迭代器的默认构造 operator* operator-> 前置和-- 后置和--…