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://xiahunao.cn/news/2811989.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

[算法沉淀记录]排序算法 —— 快速排序

排序算法 —— 快速排序介绍 基本概念 快速排序&#xff08;Quicksort&#xff09;是一种排序算法&#xff0c;最早由东尼霍尔提出。在平均状况下&#xff0c;排序 n 个项目要 Ο(n log n) 次比较。在最坏状况下则需要 Ο(n2) 次比较&#xff0c;但这种状况并不常见。事实上&…

linux centos7.9改dns和ip

vi /etc/sysconfig/network-scripts/ifcfg-ens32 &#xff1a;wq后 重启网络服务 systemctl restart network —————————————————————————— 篇外话题 软件下载 xshell可以从腾讯软件中心下载

Open CASCADE学习|GC_MakeArcOfCircle构造圆弧

目录 1、通过圆及圆的两个参数创建圆弧&#xff0c;参数为弧度角 2、通过圆及圆上的一点、圆的1个参数创建圆弧&#xff0c;参数为弧度角&#xff0c;Sense决定方向 3、通过圆及圆上的两个点创建圆弧&#xff0c;Sense决定方向 4、通过三点创建圆弧&#xff0c;最后一点应安…

react useRef用法

1&#xff0c;保存变量永远不丢失 import React, { useState,useRef } from react export default function App() { const [count,setcount] useState(0) var mycount useRef(0)//保存变量永远不丢失--useRef用的是闭包原理 return( <div> <button onClick{()>…

SpringBoot使用classfinal-maven-plugin插件加密Jar包

jar包加密 1、在启动类的pom.xml中加入classfinal-maven-plugin插件 <build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin><plugin><…

Qt QWidget 简约美观的加载动画 第五季 - 小方块风格

给大家分享两个小方块风格的加载动画 &#x1f60a; 第五季来啦 &#x1f60a; 效果如下: 一个三个文件,可以直接编译运行 //main.cpp #include "LoadingAnimWidget.h" #include <QApplication> #include <QGridLayout> int main(int argc, char *arg…

Python之词频统计(自然语言处理)

背景 词频统计是指对一段文本中每个单词出现的次数进行计数分析。这种分析有助于了解文本的重点词汇、主题或作者的写作风格。如果你有一个特定的文本或想要分析某些内容的词频&#xff0c;你可以提供文本&#xff0c;我可以为你进行简单的词频统计。 例如&#xff0c;如果你…

jeesite用字典项配置二级下拉选

1、配置字典项 2、html代码&#xff1a;修改下拉选项框 <div class"col-xs-6"><div class"form-group"><label class"control-label col-sm-4" title""><span class"required">*</span> ${…

备考北京高考数学:历年选择题真题练一练和解析(2014-2023)

还有三个多月的时间就要高考了&#xff0c;我们今天继续看北京市高考数学真题和解析。今天看5道选择题。独家制作的在线练习集&#xff0c;可以便捷地反复刷这些真题&#xff0c;吃透真题&#xff08;背后的知识点和解题技巧&#xff09;&#xff0c;让高考数学再上一个台阶。 …

OpenAI Sora 关键技术详解:揭秘时空碎片 (Spacetime Patches) 技术

编者按&#xff1a;近日&#xff0c;OpenAI发布其首个视频生成模型“Sora”&#xff0c;该模型生成的视频内容可以呈现出多个角色、特定动作以及复杂场景&#xff0c;为构建能够理解和模拟现实世界的人工智能模型奠定了基础。 本文解析的重点即是 Sora 背后的核心技术 Spacetim…

单片机51 定时器

一、基本概念 1.1简介 单片机的定时器是一种内部功能模块&#xff0c;用于产生计时、计数、延时等功能。定时器通常由一个或多个计数器和相关的控制逻辑组成。单片机的定时器可以运行在不同的工作模式下&#xff0c;以适应不同的计时和计数需求。 C51中的定时器和计数器是同…

Tomcat 下部署若依单体应用可观测最佳实践

实现目标 采集指标信息采集链路信息采集日志信息采集 RUM 信息会话重放 即用户访问前端的一系列过程的会话录制信息&#xff0c;包括点击某个按钮、操作界面、停留时间等&#xff0c;有助于客户真是意图、操作复现 版本信息 Tomcat (9.0.81)Springboot(2.6.2)JDK (>8)DDT…

请求包的大小会影响Redis每秒处理请求数量

文章目录 &#x1f50a;博主介绍&#x1f964;本文内容压测规划客户端长连接数量对性能的影响请求包大小的影响Pipleline模式对Redis的影响 &#x1f4e2;文章总结&#x1f4e5;博主目标 &#x1f50a;博主介绍 &#x1f31f;我是廖志伟&#xff0c;一名Java开发工程师、Java领…

第二章 Xshell5连接VM中虚拟系统Ubuntu1704

第二章 Xshell5连接VM中虚拟系统Ubuntu1704 第一章 Win10系统VM安装Ubuntu1704虚拟机 第三章 VMware虚拟机ubuntu显示屏幕太小&#xff0c;无法自适应解决办法 一、设置全新安装的Ubuntu的root密码 1.1、启动Ubuntu系统&#xff0c;在桌面右键打开终端 1.2、尝试登陆root用户…

【postgresql】数据表id自增与python sqlachemy结合实例

需求&#xff1a; postgresql实现一个建表语句&#xff0c;表名&#xff1a;student,字段id,name,age&#xff0c; 要求&#xff1a;每次添加一个数据id会自动增加1 在PostgreSQL中&#xff0c;您可以使用SERIAL或BIGSERIAL数据类型来自动生成主键ID。以下是一个创建名为stude…

TiDB之分布式数据库TiDB 操作管理规范【附可下载文档】

一、 目的 为了在软件生命周期内规范数据库相关的设计、开发、运维工作,便于不同团队之间的沟通及协调,制定此文档,以期在相关规范上达成共识和默契,提升相关环节的工作效率及系统的可维护性。同时好的规范,在执行的时候可以培养出好的习惯,好的习惯是软件质量的很好保证…

EMQX Enterprise 5.5 发布:新增 Elasticsearch 数据集成

EMQX Enterprise 5.5.0 版本已正式发布&#xff01; 在这个版本中&#xff0c;我们引入了一系列新的功能和改进&#xff0c;包括对 Elasticsearch 的集成、Apache IoTDB 和 OpenTSDB 数据集成优化、授权缓存支持排除主题等功能。此外&#xff0c;新版本还进行了多项改进以及 B…

Qt项目:网络1

文章目录 项目&#xff1a;网路项目1&#xff1a;主机信息查询1.1 QHostInfo类和QNetworkInterface类1.2 主机信息查询项目实现 项目2&#xff1a;基于HTTP的网络应用程序2.1 项目中用到的函数详解2.2 主要源码 项目&#xff1a;网路 项目1&#xff1a;主机信息查询 使用QHostI…

【练习——打印每一位数】

打印一个数的每一位 举个例子&#xff1a;我们现在要求打印出123的每一位数字。我们需要去想123%10等于3&#xff0c;就可以把3单独打印出来了&#xff0c;然后再将123/10可以得到12&#xff0c;将12%10就可以打印出2&#xff0c;而我们最后想打印出1&#xff0c;只需要1%10就…

前端路由与后端路由的区别

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…