QT之项目经验(windows下的sqlite,c++开发)

目录

一、需要时间去磨练gui的调整和优化

1. 借鉴网上开源项目学习
2. gui的布局及调整是磨人的一件事情
3. gui的布局也是可以用组件复刻的
4. 耗时的设备树

二、多线程异步弹窗

三、定时任务动态变更设定

1.确定按钮触发
2.此处监听定时任务时间的改变
3.此处对改变做出具体内容

四、其余内容

五、题外话


一、需要时间去磨练gui的调整和优化

1. 借鉴网上开源项目学习
标注:学习的开源项目名字为《QT-C++-万能XX管理系统-代码和相关资料》(这里未记录下载地址),是着手开发至今的启蒙代码,代码较整洁,还算不错,如有需要评论区留言吧,或者网上搜一搜应该能够找到
标注:上手开发还是要从实操开始,跟随书籍步步进行还是比较慢的。因为这次经历是由于接手要开发一个CS架构的项目,时间紧压力会有尽快上手的情况,也是较快学习编程的一种方式
在这里插入图片描述
2. gui的布局及调整是磨人的一件事情
注:几乎2天时间一直与布局的排列以及微调较劲
注:也是因为每一个系统会有较多的页面要调整,开发期间会参杂着后端代码的开发。回过头来又发现对布局的组件会有生疏,于是辗转反复
3. gui的布局也是可以用组件复刻的如图中提示的【密码不能为空】这样的弹出框组件
注:上述提到的《QT-C++-万能XX管理系统-代码和相关资料》Demo中就有使用到的弹出框组件。
注:这次的项目在此基础上还对组件进行了异步处理。与后端消息接收系统进行了解耦。
在这里插入图片描述
注:较磨人的非布局组件莫属了
注:在刚开始接触QT进行布局模仿学习时,会出现一种奇特的现象:为什么Demo能够办到的布局效果,我照做了,可是样子就是不一样
注:其实答案就在折叠框里。熟练了就会好了
在这里插入图片描述

4. 耗时的设备树
注:在第一张图中的设备树是有编辑、查看以及子查询功能的。在系统管理中就可以进行维护。操作较顺畅,但是调试还是用了不少的时间
在这里插入图片描述
下图是设备树的UI编辑页面
在这里插入图片描述下图是设备树部分代码布局
1 为设备树中tab页的抽象类。2 中为其余页面代码。3 为设备树页面入口方法等
本文描述的内容只是大概的对所作的内容中印象深刻的点进行了轻描淡写。后面还会有更深入的介绍会在这里标注 >>|

在这里插入图片描述

二、多线程异步弹窗

注:消息弹窗异步弹出其实是两个线程之间消息交互的过程 主线程发生的事情在第二个线程收到并创建出来,而不影响主线程的运行在这里插入图片描述

#include "threadinformationmessagebox.h"#include <QDebug>
#include "app/myhelper.h"ThreadInformationMessageBox::ThreadInformationMessageBox(QObject *parent) : QObject(parent)
{}
ThreadInformationMessageBox::ThreadInformationMessageBox(const QString &strTitle, const QString &strMessage): m_strTitle(strTitle),m_strMessage(strMessage)
{
}void ThreadInformationMessageBox::show(const QString &strTitle, const QString &strMessage)
{QEventLoop eventLoop;auto messageBox = new ThreadInformationMessageBox(strTitle, strMessage);connect(messageBox, SIGNAL(destroyed()), &eventLoop, SLOT(quit()));messageBox->readyShow();eventLoop.exec();
}
void ThreadInformationMessageBox::readyShow(void)
{this->moveToThread(QApplication::instance()->thread());QTimer::singleShot(0, this, SLOT(onShow()));
}
void ThreadInformationMessageBox::onShow(void)
{MyHelper::ShowMessageBoxInfo(m_strMessage);emit this->msgBoxhandled();this->deleteLater();
}

三、定时任务动态变更设定

注:定时任务在运行期间可以动态变换重新开始计时
在这里插入图片描述注:通过timer类的setInterval方法进行事件重置就可以办到


void CustomTcpSocket::handleChangeIntervalTime(int intervalTime)
{if(this->ConnectedState != QTcpSocket::ConnectedState) return;this->timer->setInterval(Myapp::secToMillSec(intervalTime));
//    qDebug() << "handleChangeIntervalTime:" << intervalTime;emit reciveMsg(QString("对设备: %1,定时轮询时间重置为: %2 秒.").arg(this->devNumber).arg(intervalTime));
}

注:还有一点要说的就是使用消息通知机制 Emit 键字就可以办到
注:在进行设定好新的定时轮询时间后点击保存出发updateData事件
注:使用 emit 发送消息通知给注册的地方 将触发事件的发生

  • 【确定按钮触发】
    在这里插入图片描述
  • 【此处监听定时任务时间的改变】在这里插入图片描述
  • 【此处对改变做出具体内容】
    void CustomTcpServer::changeTimerIntervalTime(int intervalTime)
    {if(socketList.size() == 0) return;for(int i=0; i<socketList.size(); i++) {socketList.at(i)->handleChangeIntervalTime(intervalTime);}
    }
    

四、其余内容

注:其余部分基本就是增删改查的操作了。还有界面ui的优化和微调
注:这里对项目的完善还有待继续。其实还是想对项目做进一步重构的
注:希望可以有时间学习到更多的源码程序。
注:在开发中学习C++编程知识,其中就包括下面的内容
描述:C++ Primer 中文版, 以及bilibili上的C++大神的讲课
在这里插入图片描述
bilibili大神的讲课(外国人,但有中文翻译,不过后期中文就跟不上了,还是挺棒的)
在这里插入图片描述

五、题外话

注:年龄越来越大会发现时间就像转瞬即逝的流星。越过越快。最近自己在用【得到】听书。讲解优秀的书籍。用上下班的时间去了解各个方面的人情世故,还是很有意想不到的收获的。真的后悔没早点发现这个东西 说不定能帮你解决些问题(^-----------------------------^)!

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

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

相关文章

ClickHouse 指南(三)最佳实践 -- 跳数索引

Data Skipping Indexes Data Skipping Indexes 2 1、简介 影响ClickHouse查询性能的因素很多。在大多数情况下&#xff0c;关键因素是ClickHouse在计算查询WHERE子句条件时是否可以使用主键。因此&#xff0c;选择适用于最常见查询模式的主键对于有效的表设计至关重要。 然…

k8s(5)

目录 使用Kubeadm安装k8s集群&#xff1a; 初始化操作&#xff1a; 每台主从节点&#xff1a; 升级内核&#xff1a; 所有节点安装docker &#xff1a; 所有节点安装kubeadm&#xff0c;kubelet和kubectl&#xff1a; 修改了 kubeadm-config.yaml&#xff0c;将其传输给…

k8s pv与pvc理解与实践

参考文章&#xff1a; https://blog.csdn.net/qq_41337034/article/details/117220475 一、 pv/pvc简述 Pv是指PersistentVolume&#xff0c;中文含义是持久化存储卷是对底层的共享存储的一种抽象&#xff0c;Pv由管理员进行配置和创建&#xff0c;只要包含存储能力&#xff…

iPhone利用文件管理器批量导出语音备忘录和照片到电脑

步骤1&#xff1a;使用文件服务器在 iPhone 和电脑间共享文件 参考文献&#xff1a;苹果官网操作指南 步骤1.1&#xff1a;iPhone上打开文件app&#xff0c;点击右上角三个点&#xff0c;选择“连接服务器” 步骤1.2&#xff1a;输入电脑的登录账号和密码 步骤1.3&#xff1a…

基于uniapp框架的古汉语学习考试系统 微信小程序python+java+node.js+php

1、一般用户的功能及权限 所谓一般用户就是指还没有注册的过客,他们可以浏览主页面上的信息。但如果需要其它操作时&#xff0c;要登录注册&#xff0c;只有注册成功才有的权限。 2、管理员的功能及权限 用户信息的添加和管理&#xff0c;古汉语信息加和管理和学习视频添加和管…

php脚本输出中文在浏览器中显示乱码

问题说明 这个问题一般出现在较低版本的php中&#xff0c;原因是php和浏览器的字符解析方式不对应 &#xff0c;导致中文字符被错误解析成乱码 &#xff08;注&#xff0c;此处的php版本任意切换是依赖于小皮面板&#xff08;phpstudy&#xff09;实现的&#xff0c;感兴趣可以…

YOLOv5-Openvino和ONNXRuntime推理【CPU】

1 环境&#xff1a; CPU&#xff1a;i5-12500 Python&#xff1a;3.8.18 2 安装Openvino和ONNXRuntime 2.1 Openvino简介 Openvino是由Intel开发的专门用于优化和部署人工智能推理的半开源的工具包&#xff0c;主要用于对深度推理做优化。 Openvino内部集成了Opencv、Tens…

IDEA的LeetCode插件的设置

一、下载插件 选择点击File->Setting->Plugins&#xff1a;搜索LeetCode 二、打开这个插件 选择View —>Tool Windows—>leetcode 三、登陆自己的账号 关于下面几个参数的定义&#xff0c;官方给的是&#xff1a; Custom code template: 开启使用自定义模板&…

Springboot教程(二)——过滤器、拦截器

过滤器 过滤器可以在调用控制器方法之前进行一些操作&#xff0c;过滤器类一般放在filter包下。 配置类注册 使用过滤器时&#xff0c;要实现Filter接口&#xff0c;并重写doFilter方法&#xff1a; class TestFilter : Filter {override fun doFilter(request: ServletReq…

对数据结构的初步认识

前言: 牛牛开始更新数据结构的知识了.本专栏后续会分享用c语言实现顺序表,链表,二叉树,栈和队列,排序算法等相关知识,欢迎友友们互相学习,可以私信互相讨论哦! &#x1f388;个人主页:&#x1f388; :✨✨✨初阶牛✨✨✨ &#x1f43b;推荐专栏: &#x1f354;&#x1f35f;&a…

【简写Mybatis】02-注册机的实现以及SqlSession处理

前言 注意&#xff1a; 学习源码一定一定不要太关注代码的编写&#xff0c;而是注意代码实现思想&#xff1a; 通过设问方式来体现代码中的思想&#xff1b;方法&#xff1a;5W1H 源代码&#xff1a;https://gitee.com/xbhog/mybatis-xbhog&#xff1b;https://github.com/xbh…

%00截断 [GKCTF 2020]cve版签到

打开题目 F12之后在Headers中发现hint 两者结合利用零字符截断使get_headers()请求到本地127.0.0. 结合链接 构造 ?urlhttp://127.0.0.1%00www.ctfhub.com 必须以123结尾 ?urlhttp://127.0.0.123%00www.ctfhub.com 得到flag 知识点&#xff1a; PHP中get_headers函数 g…

解析ChatGPT Plus相比chatgpt3.5有哪些优势

「ChatGPT Plus」提供更出色的对话体验和更广泛的应用能力&#xff0c;学生可以用来写作、职场人也可以用来写计划书、策划书等等&#xff0c;并且问它一些问题比搜索引擎好用多了简直。但普通人使用起来有一点门槛&#xff0c;并且升级4.0也难住了许多爱好者。 ChatGPT主要功能…

【Excel PDF 系列】EasyExcel + iText 库

你知道的越多&#xff0c;你不知道的越多 点赞再看&#xff0c;养成习惯 如果您有疑问或者见解&#xff0c;欢迎指教&#xff1a; 企鹅&#xff1a;869192208 文章目录 前言转换前后效果引入 pom 配置代码实现定义 ExcelDataVo 对象主方法EasyExcel 监听器 前言 最近遇到生成 …

微信小程序蓝牙通信HC08

总结这两天研究的蓝牙串口。人话版资料不多&#xff0c;主要靠翻别人的仓库和文档。 单片机部分&#xff0c;与蓝牙串口通信是通过串口。比我想的要简单&#xff0c;小程序部分&#xff0c;有非常多的服务和特征&#xff0c;而且人话版资料不多。 如果本文有什么问题&#xf…

AI绘画工具合集,让想象触手可及!

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 目录 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌…

【目标检测新SOTA!v7 v4作者新作!】YOLO v9 思路设计 + 全流程优化 + 手把手训练自己数据

YOLO v9 思路复现 全流程优化 手把手训练自己数据 提出背景&#xff1a;深层网络的 信息丢失、梯度流偏差YOLO v9 设计逻辑可编程梯度信息&#xff08;PGI&#xff09;&#xff1a;使用PGI改善训练过程广义高效层聚合网络&#xff08;GELAN&#xff09;&#xff1a;使用GELAN…

华为数通方向HCIP-DataCom H12-821题库(单选题:481-500)

第481题 以下关于基于SD-WAN思想的EVPN互联方案的描述,错误的是哪一项? A、通过部署独立的控制面,将网络转发和控制进行了分离,从而实现了网络控制的集中化 B、通过对WAN网络抽象和建模,将上层网络业务和底层网络具体实现架构进行解耦,从而实现网络自动化 C、通过集中的…

四、分类算法 - 决策树

目录 1、认识决策树 2、决策树分类原理详解 3、信息论基础 3.1 信息 3.2 信息的衡量 - 信息量 - 信息熵 3.3 决策树划分的依据 - 信息增益 3.4 案例 4、决策树API 5、案例&#xff1a;用决策树对鸢尾花进行分类 6、决策树可视化 7、总结 8、案例&#xff1a;泰坦尼…

深度学习手写字符识别:推理过程

说明 本篇博客主要是跟着B站中国计量大学杨老师的视频实战深度学习手写字符识别。 第一个深度学习实例手写字符识别 深度学习环境配置 可以参考下篇博客&#xff0c;网上也有很多教程&#xff0c;很容易搭建好深度学习的环境。 Windows11搭建GPU版本PyTorch环境详细过程 数…