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

news2024/9/29 2:26:38

目录

一、需要时间去磨练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.coloradmin.cn/o/1473042.html

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

相关文章

ABAP 发送带EXCEL邮件

前言 没啥特殊需求&#xff0c;就是有个库龄报表用户想整邮件发送 实现 用的最简单的XLS文件作为excel附件发送出去 观察XLS文件的纯文本格式&#xff0c;每列之间用TAB制表符分隔&#xff0c;每行之间用回车符分隔 思路也比较明确&#xff0c;在SAP中实现这种格式&#xf…

golang学习4,glang的web接口

1.代码 package mainimport (/*"net/http"*/"github.com/gin-gonic/gin" )func main() {r : gin.Default()r.GET("/get", func(ctx *gin.Context) {ctx.String(200/*http.StatusOK*/, "hello word golang-web!")})r.POST("/use…

【Excel PDF 系列】POI + iText 库实现 Excel 转换 PDF

你知道的越多&#xff0c;你不知道的越多 点赞再看&#xff0c;养成习惯 如果您有疑问或者见解&#xff0c;欢迎指教&#xff1a; 企鹅&#xff1a;869192208 文章目录 前言转换前后效果引入 pom 配置代码实现 前言 最近遇到生成 Excel 并转 pdf 的需求&#xff0c;磕磕碰碰总…

大语言模型推理加速技术:计算加速篇

原文&#xff1a;大语言模型推理加速技术&#xff1a;计算加速篇 - 知乎 目录 简介 Transformer和Attention 瓶颈 优化目标 计算加速 计算侧优化 KVCache Kernel优化和算子融合 分布式推理 内存IO优化 Flash Attention Flash Decoding Continuous Batching Page…

STM32--低功耗模式详解

一、PWR简介 正常模式与睡眠模式耗电是mA级&#xff0c;停机模式与待机模式是uA级。 二、电源框图 供电区域有三处&#xff0c;分别是模拟部分供电&#xff08;VDDA&#xff09;&#xff0c;数字部分供电&#xff0c;包括VDD供电区域和1.8V供电区域&#xff0c;后备供电&…

WinForms中的Timer探究:Form Timer与Thread Timer的差异

WinForms中的Timer探究&#xff1a;Form Timer与Thread Timer的差异 在Windows Forms&#xff08;WinForms&#xff09;应用程序开发中&#xff0c;定时器&#xff08;Timer&#xff09;是一个常用的组件&#xff0c;它允许我们执行定时任务&#xff0c;如界面更新、周期性数据…

喜报|迪捷软件入选工信部“2023年信息技术应用创新解决方案”

为进一步推进信创生态建设&#xff0c;激发产业自主创新活力&#xff0c;高效促进供需协同发展&#xff0c;加强区域联动和资源整合&#xff0c;国家工业和信息化部网络安全产业发展中心&#xff08;工业和信息化部信息中心&#xff09;联合相关单位&#xff0c;遴选了一批可复…

【电子书】研发管理

资料 wx&#xff1a;1945423050 整理了一些互联网电子书&#xff0c;推荐给大家 研发管理 ABAQUS 6.14中文版有限元分析与实例详解.epubAkka入门与实践.epubAltium Designer 16电路设计与仿真从入门到精通.epubAltium Designer17电子设计速成实战宝典.epubApache Kafka源码剖…

git push 总是需要输入密码或者个人访问令牌personal access token解决方案

文章目录 遇到问题解决方法 遇到问题 git push的时候总是需要输入密码或者个人访问令牌personal access token 解决方法 ChatGPT给出的解决方案&#xff0c;解决了我的问题。 如果在使用 git push 命令时总是需要输入个人访问令牌&#xff0c;这可能是因为您的 GitHub 账号…

Git 突破 文件尺寸限制

前言 当Git本地存储里右超过50MB&#xff0c;却又确实需要上传的时候&#xff0c;就需要用到了不是 解决 本代码就是把大文件进行拆解成小文件&#xff0c;然后上传。 等到拉取下来的时候&#xff0c;可以直接再进行合并&#xff0c;合并成原文件 代码如下&#xff0c;仅供…

MySQL集群 双主架构(配置命令)

CSDN 成就一亿技术人&#xff01; 今天刚开学第一天给大家分享一期&#xff1a;MySQL集群双主的配置需求和命令 CSDN 成就一亿技术人&#xff01; 神秘泣男子主页&#xff1a;作者首页 <———— MySQL专栏 &#xff1a;MySQL数据库专栏<———— MySQL双主是一…

AutoSAR(基础入门篇)11.5-服务映射(自顶向下)

目录 一、配置Service Needs 二、配置Cfg同步 我们在下一节的实验课中讲解这里的具体配置流程,本节主要讲一下这些配置的大致流程和配置项的作用。NvBlockSwComponents是一个可选项, 我们这里开始不使用NvBlockSwComponents,将我们的Application SWC直接和NvM通过C/S连接起…

RC4算法

RC4 RC4是Ron Rivest为RSA设计的序列密码,RC4算法简单、速度快、容易用软硬件实现,因此应用广泛。比如WEP、WPA、SSL/TLS应用了RC4;Windows、Lotus notes、Apple APCE等软件系统也应用了RC4。 1. RC4算法 RC4具体算法如下: 第一步:密钥调度算法(The Key-Scheduling Alg…

数据结构与算法|线性结构

数据结构与算法|线性结构 第二章 线性结构2.1 多项式表示2.2 什么是线性表2.3 线性表的实现方式2.3.1 线性表的顺序存储实现2.3.2 线性表的链式存储实现1. 单链表实现2. 双链表实现 上篇&#xff1a;第一章、绪论 第二章 线性结构 线性结构是数据结构中最基础的&#xff0c;也…

【HarmonyOS】鸿蒙开发之Stage模型-基本概念——第4.1章

Stage模型-基本概念 名词解释 AbilityStage:应用组件的“舞台“ UIAbility:包含UI界面的应用组件&#xff0c;是系统调度的基本单元 WindowStage:组件内窗口的“舞台“ Window&#xff1a;用来绘制UI页面的窗口 HAP:Harmony Ability Package(鸿蒙能力类型的包) HSP:Harmony Sh…

ZYNQ:串口-CAN协议转换

前言 目前已经实现zynq的PS-CAN和PL-CAN功能。串口-CAN协议转换是实现以太网-CAN功能的过渡&#xff0c;通过这个流程能够减少后期以太网工程出现问题的频率。阶段性功能目标如下&#xff1a; 实现数据在CAN调试助手和串口调试助手之间的来回转换&#xff0c;从而了解中断机制…

B站项目-基于Pytorch的ResNet垃圾图片分类

基于Pytorch的ResNet垃圾图片分类 数据集预处理 画图片的宽高分布散点图 import osimport matplotlib.pyplot as plt import PIL.Image as Imagedef plot_resolution(dataset_root_path):image_size_list []#存放图片尺寸for root, dirs, files in os.walk(dataset_root_pa…

【深入理解设计模式】装饰者设计模式

装饰者设计模式 装饰者设计模式&#xff08;Decorator Design Pattern&#xff09;是一种结构型设计模式&#xff0c;它允许向现有对象添加新功能而不改变其结构。这种模式通常用于需要动态地为对象添加功能或行为的情况&#xff0c;而且这些功能可以独立于对象本身来进行扩展…

用C#开发Excel插件的强大开源工具

推荐一个开源项目&#xff0c;方便我们使用C#为Excel开发插件。 01 项目简介 Excel-DNA是一个.Net开源项目&#xff0c;为开发者提供了一种便利的方法&#xff0c;可以将.Net代码与Excel集成&#xff0c;能够轻松的为Excel创建自定义函数、图表、表单等&#xff0c;一方面不仅…

html5盒子模型

1.边框的常用属性 border-color 属性 说明 示例 border-top-color 上边框颜色 border-top-color:#369; border-right-color 右边框颜色 border-right-color:#369; border-bottom-color 下边框颜色 border-bottom-color:#fae45b; border-left-color 左边框颜色…