《QT实用小工具·三十一》基于QT开发的访客管理平台demo2

1、概述
源码放在文章末尾

该项目为访客管理平台demo,包含主界面、系统设置、警情查询、调试帮助、用户退出功能。
在这里插入图片描述
项目部分代码如下:

#pragma execution_character_set("utf-8")#include "frmmain.h"
#include "ui_frmmain.h"
#include "iconhelper.h"
#include "qthelper.h"frmMain::frmMain(QWidget *parent) : QWidget(parent), ui(new Ui::frmMain)
{ui->setupUi(this);this->initForm();this->initStyle();this->initLeftMain();this->initLeftConfig();
}frmMain::~frmMain()
{delete ui;
}bool frmMain::eventFilter(QObject *watched, QEvent *event)
{if (watched == ui->widgetTitle) {if (event->type() == QEvent::MouseButtonDblClick) {on_btnMenu_Max_clicked();}}return QWidget::eventFilter(watched, event);
}void frmMain::getQssColor(const QString &qss, const QString &flag, QString &color)
{int index = qss.indexOf(flag);if (index >= 0) {color = qss.mid(index + flag.length(), 7);}//qDebug() << TIMEMS << flag << color;
}void frmMain::getQssColor(const QString &qss, QString &textColor, QString &panelColor,QString &borderColor, QString &normalColorStart, QString &normalColorEnd,QString &darkColorStart, QString &darkColorEnd, QString &highColor)
{getQssColor(qss, "TextColor:", textColor);getQssColor(qss, "PanelColor:", panelColor);getQssColor(qss, "BorderColor:", borderColor);getQssColor(qss, "NormalColorStart:", normalColorStart);getQssColor(qss, "NormalColorEnd:", normalColorEnd);getQssColor(qss, "DarkColorStart:", darkColorStart);getQssColor(qss, "DarkColorEnd:", darkColorEnd);getQssColor(qss, "HighColor:", highColor);
}void frmMain::initForm()
{//设置无边框QtHelper::setFramelessForm(this);//设置图标IconHelper::setIcon(ui->labIco, 0xf073, 30);IconHelper::setIcon(ui->btnMenu_Min, 0xf068);IconHelper::setIcon(ui->btnMenu_Max, 0xf067);IconHelper::setIcon(ui->btnMenu_Close, 0xf00d);//ui->widgetMenu->setVisible(false);ui->widgetTitle->setProperty("form", "title");//关联事件过滤器用于双击放大ui->widgetTitle->installEventFilter(this);ui->widgetTop->setProperty("nav", "top");QFont font;font.setPixelSize(25);ui->labTitle->setFont(font);ui->labTitle->setText("智能访客管理平台");this->setWindowTitle(ui->labTitle->text());ui->stackedWidget->setStyleSheet("QLabel{font:60px;}");QSize icoSize(32, 32);int icoWidth = 85;//设置顶部导航按钮QList<QAbstractButton *> tbtns = ui->widgetTop->findChildren<QAbstractButton *>();foreach (QAbstractButton *btn, tbtns) {btn->setIconSize(icoSize);btn->setMinimumWidth(icoWidth);btn->setCheckable(true);connect(btn, SIGNAL(clicked()), this, SLOT(buttonClick()));}ui->btnMain->click();ui->widgetLeftMain->setProperty("flag", "left");ui->widgetLeftConfig->setProperty("flag", "left");ui->page1->setStyleSheet(QString("QWidget[flag=\"left\"] QAbstractButton{min-height:%1px;max-height:%1px;}").arg(60));ui->page2->setStyleSheet(QString("QWidget[flag=\"left\"] QAbstractButton{min-height:%1px;max-height:%1px;}").arg(25));
}void frmMain::initStyle()
{//加载样式表QString qss = QtHelper::getStyle(":/qss/blacksoft.css");if (!qss.isEmpty()) {QString paletteColor = qss.mid(20, 7);qApp->setPalette(QPalette(QColor(paletteColor)));qApp->setStyleSheet(qss);}//先从样式表中取出对应的颜色QString textColor, panelColor, borderColor, normalColorStart, normalColorEnd, darkColorStart, darkColorEnd, highColor;getQssColor(qss, textColor, panelColor, borderColor, normalColorStart, normalColorEnd, darkColorStart, darkColorEnd, highColor);//将对应颜色设置到控件this->borderColor = highColor;this->normalBgColor = normalColorStart;this->darkBgColor = panelColor;this->normalTextColor = textColor;this->darkTextColor = normalTextColor;
}void frmMain::buttonClick()
{QAbstractButton *b = (QAbstractButton *)sender();QString name = b->text();QList<QAbstractButton *> tbtns = ui->widgetTop->findChildren<QAbstractButton *>();foreach (QAbstractButton *btn, tbtns) {btn->setChecked(btn == b);}if (name == "主界面") {ui->stackedWidget->setCurrentIndex(0);} else if (name == "系统设置") {ui->stackedWidget->setCurrentIndex(1);} else if (name == "警情查询") {ui->stackedWidget->setCurrentIndex(2);} else if (name == "调试帮助") {ui->stackedWidget->setCurrentIndex(3);} else if (name == "用户退出") {exit(0);}
}void frmMain::initLeftMain()
{iconsMain << 0xf030 << 0xf03e << 0xf247;btnsMain << ui->tbtnMain1 << ui->tbtnMain2 << ui->tbtnMain3;for (int i = 0; i < btnsMain.count(); ++i) {QToolButton *btn = (QToolButton *)btnsMain.at(i);btn->setCheckable(true);btn->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);connect(btn, SIGNAL(clicked(bool)), this, SLOT(leftMainClick()));}IconHelper::StyleColor styleColor;styleColor.position = "left";styleColor.iconSize = 18;styleColor.iconWidth = 35;styleColor.iconHeight = 25;styleColor.borderWidth = 4;styleColor.borderColor = borderColor;styleColor.setColor(normalBgColor, normalTextColor, darkBgColor, darkTextColor);IconHelper::setStyle(ui->widgetLeftMain, btnsMain, iconsMain, styleColor);ui->tbtnMain1->click();
}void frmMain::initLeftConfig()
{iconsConfig << 0xf031 << 0xf036 << 0xf249 << 0xf055 << 0xf05a << 0xf249;btnsConfig << ui->tbtnConfig1 << ui->tbtnConfig2 << ui->tbtnConfig3 << ui->tbtnConfig4 << ui->tbtnConfig5 << ui->tbtnConfig6;for (int i = 0; i < btnsConfig.count(); ++i) {QToolButton *btn = (QToolButton *)btnsConfig.at(i);btn->setCheckable(true);btn->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);connect(btn, SIGNAL(clicked(bool)), this, SLOT(leftConfigClick()));}IconHelper::StyleColor styleColor;styleColor.position = "left";styleColor.iconSize = 16;styleColor.iconWidth = 20;styleColor.iconHeight = 20;styleColor.borderWidth = 3;styleColor.borderColor = borderColor;styleColor.setColor(normalBgColor, normalTextColor, darkBgColor, darkTextColor);IconHelper::setStyle(ui->widgetLeftConfig, btnsConfig, iconsConfig, styleColor);ui->tbtnConfig1->click();
}void frmMain::leftMainClick()
{QAbstractButton *b = (QAbstractButton *)sender();QString name = b->text();for (int i = 0; i < btnsMain.count(); ++i) {QAbstractButton *btn = btnsMain.at(i);btn->setChecked(btn == b);}ui->lab1->setText(name);
}void frmMain::leftConfigClick()
{QToolButton *b = (QToolButton *)sender();QString name = b->text();for (int i = 0; i < btnsConfig.count(); ++i) {QAbstractButton *btn = btnsConfig.at(i);btn->setChecked(btn == b);}ui->lab2->setText(name);
}void frmMain::on_btnMenu_Min_clicked()
{showMinimized();
}void frmMain::on_btnMenu_Max_clicked()
{static bool max = false;static QRect location = this->geometry();if (max) {this->setGeometry(location);} else {location = this->geometry();this->setGeometry(QtHelper::getScreenRect());}this->setProperty("canMove", max);max = !max;
}void frmMain::on_btnMenu_Close_clicked()
{close();
}

源码下载

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

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

相关文章

js调用html页面需要隐藏某个按钮

&#x1f3c6;本文收录于「Bug调优」专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收藏&&…

Python程序的控制结构-课后作业[python123题库]

程序的控制结构-课后作业 1、中国古代数学问题——鸡兔同笼 鸡兔同笼 类型&#xff1a;流程控制‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬…

Qt日志使用

QsLog使用 这篇讲qt的日志还是比较好的&#xff0c;可以在自己的函数里面配置这个日志框架实现自己所需的功能。 我接触的项目里面&#xff0c;假如有个函数功能执行错误了&#xff0c;我希望可以快速定位到这个错误&#xff0c;这个时候就需要到了日志&#xff0c;我咨询了有经…

【备忘录】openssl记录

openssl genrsa -out ca.key 2048 openssl req -x509 -new -nodes -key ca.key -days 10000 -out ca.crt -subj “/CCN/STBeijing/LBeijing/Okubernetes/OUKubernetes-manual/CNkubernetes-ca” openssl genrsa -out etcd-ca.key 2048 openssl req -x509 -new -nodes -key etc…

【Java实战】使用自定义注解实现参数校验详解

文章目录 前言📝一、Java注解简介二、启用注解校验1.启用注解2.注解@Valid和 @Validated2.1@Valid级联校验2.2@Validated高级使用三、自定义注解1.统一异常处理2.编写注解2.1 自定义校验2.2 多参数校验总结前言📝 由于实际开发中遇到大量相同的条件参数验证,不想写重复代…

Python测试转岗网络安全测试,挑战年薪30W+

有许多人问我安全测试前景怎么样&#xff1f; 目前&#xff0c;网络安全市场可大致分为17大安全领域、59个细分领域。不同领域大类核心技术相距甚远&#xff0c;因此绝大多数企业都选择专注于几个细分市场上。产品终端使用者主要以政企、军队、运营商、金融、医疗、教育、交通…

【技巧】PPT文件如何添加公司LOGO?

在工作上&#xff0c;我们经常要给PPT文件添加上公司的logo&#xff0c;如果一页一页添加不但耗时耗力&#xff0c;还容易有遗漏。那怎样快速给PPT添加logo呢&#xff1f;不清楚的小伙伴一起来看看如何吧&#xff01; 操作步骤&#xff1a; 1.打开PPT文件&#xff0c;点击菜单…

【DM8】ODBC

官网下载ODBC https://www.unixodbc.org/ 上传到linux系统中 /mnt下 [rootstudy ~]#cd /mnt [rootstudy mnt]# tar -zxvf unixODBC-2.3.12.tar.gz [rootstudy mnt]# cd unixODBC-2.3.12/ [rootstudy unixODBC-2.3.12]# ./configure 注意&#xff1a;若是报以上错 则是gcc未安…

【C语言】【数据结构】项目实践——贪吃蛇游戏(超详细)

前言 本篇博客我们来实现一个小游戏项目——贪吃蛇&#xff0c;相信肯定很多人都玩过&#xff0c;那么整个贪吃蛇是怎么实现出来的那&#xff0c;这个项目用到了很多方面的知识&#xff1a;C语言函数、枚举、结构体、动态内存管理、预处理指令、链表、Win32 API等。我们就通过这…

前端正则表达式js和测试工具

一、校验数字的表达式 1. 数字&#xff1a;^[0-9]*$2. n位的数字&#xff1a;^\d{n}$3. 至少n位的数字&#xff1a;^\d{n,}$4. m-n位的数字&#xff1a;^\d{m,n}$5. 零和非零开头的数字&#xff1a;^(0|[1-9][0-9]*)$6. 非零开头的最多带两位小数的数字&#xff1a;^([1-9][0-9…

JAVA 集合框架(一) Collection集合详解和常用方法

Java集合框架&#xff08;Java Collections Framework&#xff09;是一个强大的、高度灵活的数据结构库&#xff0c;它为Java应用程序提供了组织、存储和操作对象集合的标准方法。 集合类体系结构 接口类&#xff1a; Collection: 是单例集合类的顶层接口&#xff0c;包括Lis…

【MIT6.824】lab3 Fault-tolerant Key/Value Service 实现笔记

引言 lab3A的实验要求如下&#xff1a; Your first task is to implement a solution that works when there are no dropped messages, and no failed servers. You’ll need to add RPC-sending code to the Clerk Put/Append/Get methods in client.go, and implement Pu…

算法课程笔记——pair的使用

先思考&#xff0c;为什么 STL 中的容器和算法都是用的左闭右开区间&#xff1f; | | | 这样迭代器只需要支持和!(或者<或者)操作就可以方便的进行区间遍历了。 其它区间设置的话&#xff0c;要么得支持<操作&#xff0c;要么得在循环体内&#xff0c;操作之前进行!判定。…

牛客2024 【牛客赛文X】春招冲刺 ONT34 加油站【中等 贪心 C++、Java、Go、PHP】

题目 题目链接&#xff1a; https://www.nowcoder.com/practice/a013a0691a0343aeb262ca1450d2fe4e 思路 贪心&#xff1a; 如果总的gas小于走完全程的cost&#xff0c;直接返回-1不需要再找了 如果确保了可以走完一圈之后&#xff0c;那么从index 0开始找&#xff0c; 当g…

java-生产者消费者

目录 1.生产者消费者1.1生产者和消费者模式概述【应用】1.2生产者和消费者案例【应用】1.3生产者和消费者案例优化【应用】1.4阻塞队列基本使用【理解】1.5阻塞队列实现等待唤醒机制【理解】 1.生产者消费者 1.1生产者和消费者模式概述【应用】 概述 生产者消费者模式是一个十…

Linux软件包管理器yum—1

目录 一、Linux下软件安装的方式 二、yum 2.1查看yum已配置的源&#xff1a; 2.2查看yum配置文件&#xff1a; 2.3使用root用户安装软件&#xff1a; 2.4模糊搜索 2.5安装软件&#xff1a; 2.6卸载软件&#xff1a; 2.7扩展源&#xff1a; 2.8yum源更新&#xff1a; 一…

实验室三大常用仪器2---函数信号发生器的基本使用方法(笔记)

目录 函数信号发生器的基本使用方法 如何连接函数信号发生器和示波器 实验室三大常用仪器1---示波器的基本使用方法&#xff08;笔记&#xff09;-CSDN博客 实验室三大常用仪器3---交流毫伏表的使用方法&#xff08;笔记&#xff09;-CSDN博客 示波器是用来显示和测量信号的…

NLP预训练模型- GPT-3学习指南与学习总结案例

NLP预训练模型GPT-3学习指南与学习案例 学习指南 GPT-3&#xff0c;作为OpenAI开发的一种先进的语言生成模型&#xff0c;具有强大的语言理解和生成能力。为了有效地学习和应用GPT-3&#xff0c;以下是一些建议的学习指南&#xff1a; 理解模型原理&#xff1a;首先&#xf…

05-Logistic Softmax详解

Logistic Regression 本章我们来看另一个简单且强大的解决线性回归二元分类问题的算法&#xff0c; 即逻辑回归。不要望文生义&#xff0c; 逻辑回归虽然带回归这个字眼&#xff0c; 但它其实处理的是分类任务&#xff0c;即逻辑回归是一种分类模型&#xff0c; 而非回归模型&…

Docker(九):MySQL主从复制搭建

一&#xff1a;master 1.1 /mydata/mysql-master/conf/my.conf [mysqld] #同一局域网需要唯一 server_id101 # 不需要同步的数据库 binlog-ignore-dbmysql # 开启二进制日志 log-binmall-mysql-bin # 二进制日志使用内存大小 binlog_cache_size1M # 二进制日志格式 binlog_fo…