首页 > 其他分享 >Qt开发: 推荐一个缓冲队列操作类的实现

Qt开发: 推荐一个缓冲队列操作类的实现

时间:2024-07-11 18:25:56浏览次数:11  
标签:1s Qt 队列 缓冲 点击 按钮 include

一.缓冲队列的背景

        缓冲队列主要应用在生产者和消费者之间,保证数据的准确不丢失,提高效率。举个例子:如上图,假设点击按钮生成一个方块, 方块生产出来需要耗时1s,生成完毕后显示在界面上;然后点击10下按钮,要生产10个按钮预计耗时10s。

二.分析问题

        点击按钮是一个毫秒级别的动作,用户可以1s点击5次,所以,界面不应该阻塞用户的操作,这里,用户点击多少次按钮就会产生多少个任务,这是生产者。然后方块生产出来要1s,是耗时的操作,所以,我们将这步动作移入线程进行处理,不妨碍主界面线程工作。生成完毕后显示在界面上,这步就是消费者直接显示屏幕上。希望你能理解这个模式,很重要。

三.推荐 ConcurrentQueue.h 和 BlockingConcurrentQueue.h类实现缓冲队列的数据读取

四.测试代码

        mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QThread>
#include <QLabel>
#include <QMutex>
#include <QWaitCondition>
#include <BlockingConcurrentQueue.

标签:1s,Qt,队列,缓冲,点击,按钮,include
From: https://blog.csdn.net/cs821984831/article/details/140358378

相关文章

  • 基于QT开发的反射内存小工具
    前言最近项目需要需要开发一个反射内存小工具,经过2天的修修改终于完成了。界面如下:功能简介反射内存指定地址数据读取反射内存指定地址数据写入反射内存指定地址数据清理十进制、十六进制、二进制数据相互转换部分代码voidRfmMain::setWOtherEditData(constQStri......
  • WeChat算法(CCD/RQT)08分析
    以上内容来自AI生成,仅供学习研究交流使用CCD(ConstantClientData)CCD在微信的登录过程中的主要作用是通过设备指纹和会话信息来识别和验证设备。具体的实现步骤可能如下:设备指纹收集:收集设备的硬件和软件信息,如设备型号、操作系统版本、浏览器信息、分辨率、时区等。收......
  • 实战Qt开发WordBN笔记软件#02 通过Gitee创建YourWordBN仓库;学会GIT常用指令,并实现多分
    01背景【WordBN字远笔记】是天恩软件工作室开发的一款免费笔记软件;WordBN基于VS2019、Qt6.5开发,使用QtQuick(QML)开发语言。本课程将以【WordBN字远笔记】的界面为实战基础,详细介绍如何基于Qt/QML开发语言,从零开始开发一套真正的程序,包括国际化、版本发布、安装包制作等项目......
  • 使用pyqt5制作简单计分桌面应用
    这是一个自己写的使用pyqt5制作简单计分桌面应用的实例,希望对大家有所帮助。制作这个小程序的起因是因为有个艺术类比赛需要设计这个一个桌面程序,方便统分。(此程序尚存在部分小bug,请慎用,公开代码只为让小白熟悉如何开发一个简单的桌面计分程序)ui设计众所周知,使用pyqt5开发可以......
  • 代码随想录算法训练营Day11 | 栈与队列基础 232.用栈实现队列 225. 用队列实现栈 20.
    栈与队列栈:先进后出   empty-push-push-pop队列:先进先出Tips: 栈和队列是STL(C++标准库)里面的两个数据结构。STL最旁边的三个版本:HPSTL、P.J.PlaugerSTL、SGISTL232.用栈实现队列题目:232用栈实现队列在python中,in主要负责push,out主要负责pop初始:self.......
  • QtQuick.Dialogs中的FileDialog设置默认目录的问题
    在QML中,假如想要使用文件浏览器选择文件或者文件夹时。可以使用FileDialog。FileDialog有个属性folder,设置好路径之后,当你打开fileDialog时,fileDialog当前定位到的路径就是你设置的路径。但是这个folder的设置有点问题,和路径的层级有关系假如你的目标路径是大于等于三级的(比如......
  • Qt入门(二):Qt的基本组件
    目录Designer程序面板1、布局Layout打破布局贴合窗口2、QWidget的属性 3、Qlabel标签显示图片  4、QAbstractButton按钮类按钮组 5、QLineEdit单行文本输入框6、ComboBox组合框7、若干与数字相关的组件Designer程序面板Qt包含了一个Designer程序,用于通......
  • Qt开发 | Qt创建线程 | Qt并发-QtConcurrent
    文章目录一、Qt创建线程的三种方法二、Qt并发:QtConcurrent介绍三、QtConcurrentrun参数说明四、获取QtConcurrent的返回值五、C++其他线程技术介绍一、Qt创建线程的三种方法  以下是Qt创建线程的三种方法:方法一:派生于QThread派生于QThread,这是Qt创建线程最常用......
  • QT窗口类
    1窗口基类我们在通过Qt向导窗口基于窗口的应用程序的项目过程中倒数第二步让我们选择跟随项目创建的第一个窗口的基类,下拉菜单中有三个选项,分别为:QMainWindow、QDialog、QWidget如下图:常用的窗口类有3个在创建Qt窗口的时候,需要让自己的窗口类继承上述三个窗口类的其......
  • QT入门
    1QT概述1.1什么是QT是一个跨平台的C++应用程序开发框架具有短平快的优秀特质:投资少、周期短、见效快、效益高几乎支持所有的平台,可用于桌面程序开发以及嵌入式开发有属于自己的事件处理机制可以搞效率的开发基于窗口的应用程序。Qt是标准C++的扩展,C++的语法在Qt......