《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;欢迎大家关注&&收藏&&…

Qt日志使用

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

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等。我们就通过这…

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博客 示波器是用来显示和测量信号的…

05-Logistic Softmax详解

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

西夏区第三届中华诗词大会活动方案

活动流程/比赛规则 1.【13:30-14:10】 参赛选手签到&#xff1b;领取参赛号码牌&#xff1b;分组抽签&#xff1b;拍摄赛前感言&#xff0c;集体祝福口号&#xff1b; 2.【14:10-14:25】 熟悉设备、答题环节、题目设置等&#xff0c;走台演练 3.【14:25-14:30】 播放暖场视频…

怎么配置python

右键点击“计算机”&#xff0c;选择“属性”。 在左侧栏找到“高级系统设置”。 点击“环境变量”。 在系统变量中&#xff0c;双击“Path”。 在字符串的末尾&#xff0c;加一个分号; 然后再输入你安装python的路径&#xff0c;如图所示&#xff1a; 点击“确定”&#xff0…

logisim 图解超前进位加法器原理解释

鄙人是视频作者&#xff0c;文件在视频简介的网盘链接。 找规律图解超前进位加法器与原理解释_哔哩哔哩_bilibili 一句话就是“把能导致进位到这个位置的情况全都穷举一遍。” 穷举情况看图中算式。 视频讲解比较啰嗦。

C++修炼之路之继承<一>隐藏,赋值转换规则,继承关系

目录 前言 一&#xff1a;继承的概念和定义 1.概念 2.继承的定义 1.定义格式 2.继承关系和访问限定符 3.继承基类成员访问方式的变化 二&#xff1a;基类和派生类对象赋值转换 规则 三&#xff1a;继承中的作用域 规则 经典举例 经典例题--区分函数重载和隐藏…

PyQt介绍——QStackedWidget堆栈组件的介绍使用

QStackedWidget是一个堆栈窗口控件&#xff0c;用于管理多个堆叠的子部件。它只显示当前选中的子部件&#xff0c;而隐藏其余的子部件。 例子&#xff1a; ControlWidget窗口中&#xff0c;创建QStackedWidget&#xff0c;分别添加两个组件&#xff0c;为Test1Widget和Test2W…

商务品牌解决方案企业网站模板 Bootstrap5

目录 一.前言 二.展示 三.下载链接 一.前言 这个网站包含以下内容&#xff1a; 导航栏&#xff1a;主页&#xff08;Home&#xff09;、关于&#xff08;About&#xff09;、服务&#xff08;Services&#xff09;、博客&#xff08;Blog&#xff09;等页面链接。主页部分…