
QT
文章平均质量分 87
燕山暮雪
人生在世,唯篮球和代码不可辜负
展开
-
常用Qt线程同步的几种方法
一、QMutex类 QMutex类就像一把锁,在互斥量之前上锁(QMutex::lock()),然后在使用完互斥量之后解锁(QMutex::unlock())。比如下面的代码: void someMethod() { mutex.lock(); qDebug()<<"Hello"; qDebug()<<"World"; mutex.unlock(); } class Thread1...原创 2021-08-19 14:37:29 · 963 阅读 · 0 评论 -
如何正确使用QTcpSocket的readyRead信号?
一、问题描述:你之所以会来看我这篇文章,大概是遇到了一下几个问题:1、使用QTcpSocket时,readyread函数没有触发,或者触发了,但是触发次数不是自己想象的那样。2、readyread槽函数中,接收到的数据不对。我们先看一下Qt官方文档的说法:官方文档中对readyread函数解释很简短: This signal is emitted once every time new data is available for reading from the device'..转载 2021-08-11 13:55:58 · 6826 阅读 · 2 评论 -
Qt和MFC的比较
在当今基于C++的图形界面开发领域,能与Qt相抗衡的只有MFC。MFC是微软公司的基础类库,自然得天独厚,比如开发深层次的Windows应用远超Qt,但Qt也有杀手锏,那就是跨平台。这两点大家一目了然,下面我们再来比较一下它们的其他特点。(1)开发速度就整体而言,MFC可能会快捷一些,因为Windows平台的开发工具大多很智能,因为立足于Windows的开发人群很广,从菜鸟到专业人士(开发人员一多,技术参考就多,周围可以咨询问题的人就多)。相比较而言,Qt基于Linux,可用的开发工具不多,而且这些工具原创 2021-04-07 20:18:48 · 12255 阅读 · 1 评论 -
Qt 事件机制,底层实现原理
【1】事件事件是可以被控件识别的操作。如按下确定按钮、选择某个单选按钮或复选框。每种控件有自己可识别的事件,如窗体的加载、单击、双击等事件,编辑框(文本框)的文本改变事件等等。事件就是用户对窗口上各种组件的操作。【2】Qt事件由窗口系统或Qt自身产生的,用以响应所发生各类事情的操作。具体点,Qt事件是一个QEvent对象,用于描述程序内部或外部发生的动作。【3】Qt事件产生类型1、键盘或鼠标事件:用户按下或松开键盘或鼠标上的按键时,就可以产生一个键盘或者鼠标事件。2、绘制事件原创 2021-01-13 11:11:08 · 5925 阅读 · 2 评论 -
Qt 中的多线程技术前世今生
本文结构如下:线程概念的起源 单核 CPU 多核 CPU 线程的生命周期 访问数据所面临的挑战 中断操作 可重入问题 线程安全 Qt 提供的多线程操作及其适用场景 线程类 解决访问共享资源遇到的问题 不同线程类的适用场景 1. 线程概念的起源1.1 单核 CPU在早期的单核 CPU 时代还没有线程的概念,只有进程。操作系统作为一个大的“软件”,协调着各个硬件(如CPU、内存,硬盘、网卡灯)有序的工作着。在双核 CPU 诞生以前,我们用的 Window原创 2021-01-11 13:54:14 · 571 阅读 · 0 评论 -
一篇文章说清楚Qt信号与槽使用方法(最完整总结)
在图形界面编程中(参考《C++最好的图形库是什么?》),组件之间如何实现通信是核心的技术内容。Qt 使用了信号与槽的机制,非常的高效、简单、易学,方便开发者的使用。本文详细的介绍了Qt 当中信号与槽的概念,并演示了各种信号与槽的连接方式。一、什么是信号和槽(Signal and Slot)信号和槽是用于对象之间的通信,它是Qt的核心机制,在Qt编程中有着广泛的应用。如果想学好Qt,一定要充分掌握信号的槽的概念与使用。举个例子,在一个十字路口,信号灯变成了绿色,对面的汽车看到...原创 2021-01-08 14:07:16 · 1945 阅读 · 0 评论 -
QtConcurrent的基础用法map,mapped,mappedReduced
实际上应该说多线程让QtConcurrent实现了并行可能更准确点。不然map函数就不好理解了。那么QtConcurrent的map函数又有什么用呢?这就要先看看map的参数了。map函数有两个参数,第一个是序列(如QList),第二个参数是一个函数。它的作用就是同时用第二个参数来计算第一个参数中的每一个元素,且结果直接覆盖到元素中。如QtConcurrent::map传入图中的QList和Func,QList中的1、3、5、7、9会同时执行Func函数。执行结束后QList值变为2...原创 2020-12-31 23:01:32 · 1615 阅读 · 0 评论 -
Qt多线程的来龙去脉
一、前言#在我们开发Qt程序时,会经常用到多线程和信号槽的机制,将耗时的事务放到单独的线程,将其与GUI线程独立开,然后通过信号槽的机制来进行数据通信,避免GUI界面假死的情况。例如:使用QT实现文件的传送,并且GUI界面需要实时显示发送的进度,这时就需要将耗时的文件数据操作放到独立的线程中,然后把已传送的进度数据通过信号发送到GUI线程,GUI主线程接收到信号后通过槽函数来更新UI,这样界面就不会出现假死的情况了。多线程和信号槽机制都是QT的关键技术之一。理解清楚这两个技术点的关系,会让你在开发过程中原创 2020-12-29 13:57:03 · 919 阅读 · 0 评论