Qt为我们提供了一系列基于模板的容器类,来存储特定类型的项。这些容器类都是隐式共享的;被用作只读容器时,是线程安全的。  与STL类似,也分为序列式容器和关联式容器。  序列式容器有:QVector、QList、QLinkList、QStack、QQueue。对大部分程序来说QList都是一个很好的选择,快速添加操作;如果你想要确保元素占用连续内存,可以用QVector;而QStack和QQu
转载 2024-02-27 12:09:57
19阅读
QT容器QString类隐式共享:隐式数据共享机制去最大化资源有效利用和最小化复制克隆操
原创 2022-11-18 00:49:53
381阅读
〇、前言日常开发中,经常需要使用到一些数据结构去存放数据,纯C++开发时,只需要根据自己的需求选择合适的数据结构即可。但对于Qt/C++混编的场景,选择哪一家的数据结构就成为了一个问题,所以为了解决这个疑惑,便写篇博文详细对比下二者的差异以便后续参考。一、数据结构对比释义QtC++ STL字符串QStringstring封装了索引的双链表QList×双链表QLinkedListlist动态数组QV
简述QTabWidget类提供了选项卡式的窗口控件。功能详述选项卡小部件提供了一个选项卡栏(请参阅QTabBar)和一个“页面区域”,该页面区域用于显示与每个选项卡相关的页面。默认情况下,选项卡栏显示在页面区域上方,但是可以使用不同的配置(请参见TabPosition)。每个选项卡都与一个不同的窗口小部件(称为页面)相关联。页面区域中仅显示当前页面。其他所有页面均被隐藏。用户可以通过单击其选项卡或
转载 2024-03-19 08:59:34
49阅读
简介:Qt提供了多个基于模板的容器类,这些容器类可用于支持指定的数据类型,和STL容器相比,它们更加轻巧,安全,使用方便。这些容器类在很多方面进行了优化,例如优化速度,降低内存消耗,减少代码膨胀。它们都是隐式共享,写时复制并且它们支持线程可重入,在只读情况下,多线程访问同一对象是线程安全的。 在访问容器中的数据项时,可以使用两种风格的迭代器:Java风格迭代器和STL风格迭代。Qt还提供了fore
1. STL有6种序列容器类型  1 vector     向量 相当于一个数组     在内存中分配一块连续的内存空间进行存储。支持不指定vector大小的存储。STL内部实现时,首先分配一个非常大的内存空间预备进行存储,即capacituy()函数返回的大小,当超过此分配的空间时再整体重新放分配一块
win10下安装配置qtQt下载实现电脑的第一个小软件由于Qt官方下载非常慢就不介绍,这里是我的百度网盘里下载当然里面也有资料,还有相关工具,还有liunx下安装的qt目前较高版本的 Qt 仅支持 Win7 及其以后的操作系统,不支持 Win XP;使用 Win XP 的读者请安装 Qt 5.5.1 之前的版本。Qt 占用的存储空间很大,安装之前建议先准备好 8GB 以上的磁盘空间。对于目前 Qt
转载 2024-05-10 12:14:08
57阅读
1 Qt容器Qt提供了多个基于模板的容器类,用于存储指定类型的数据项。Qt容器类比STL中的要轻巧、安全,它们是隐式共享和可重入的,并进行了速度和存储优化,另外它们是线程安全的。线程安全:作为只读容器时可以被多个线程同时访问。隐式共享:是一种对象的管理方法,一个对象被隐式共享只是传递该对象的一个指针给使用者,而不复制实际的对象数据,只有在使用者修改数据时,才实际复制共享对象给使用者。可重入:
转载 2024-04-13 10:00:26
30阅读
简述前面讲解了 Qt 图形的基本绘制,包括: 直线、弧线、矩形、椭圆、图片、多边形,以及其它一些高级用法,比如:渐变、转换等。本节主要分享文本的绘制。主要通过 QPainter 的 darwText() 函数来实现,里面包含多个重载函数,其中,可以通过 QRect 来指定绘制的区域,也可以通过 QPoint 来指定绘制的起始点。QFont 类可以辅助设置文本的大小、粗细、字符间距等,然后使用 se
转载 2024-06-27 18:15:16
38阅读
Qt常用控件QWidget与QFrameQWidget所有图形控件的基类QFrame与QWidget的区别 QFrame是基本控件的基类, QWidget是QFrame的基类. 因此QFrame支持的方法更多一些.QMenu与QMenuBar头文件#include <QMenuBar>//菜单栏 #include <QMenu>//菜单 #include <Q
bool FindFile(const QString & path) { QDir dir(path); if (!dir.exists()) return false; dir.setFilter(QDir::Dirs|QDir::Files); dir.setSorting(QDir::DirsFirst); QFileInfoList list = dir.entryInfoLis
需要    #include <QTableWidget>      #include <QTableWidgetItem>      #include "win.h" #include <QDebug> #include <QPushButton> #inc
Sequentail ContainersQVector<T> array-like data structure(在尾部插入数据时效率很高,而在中间和头部插入数据时开销很大)。QVector提供了[]运算符QVector可以用<<运算符代替append()函数。QVector中的基本类型及指针被初始化为0。QLinkedList<T>QLinkedList不提
原创 2010-09-02 13:14:00
953阅读
QVector(数组)、QLinkedList(链表)、QMap(映射表)、QHash(哈希表)、QQueue(队列) QHash遍历举例: 法1: 法2: 法3:
转载 2017-09-25 18:38:00
206阅读
Qt布局管理1. 布局管理系统1.1 布局管理器1.1.1 基本布局管理器(QBoxLayout)1.1.2 栅格布局管理器(QGridLayout)1.1.3 窗体布局管理器(QFormLayout)1.1.4 综合使用布局管理器1.2 设置部件大小1.2.1 大小提示和最小大小提示1.2.2 大小策略1.2.3 伸缩因子1.2.4 窗体布局管理器相关属性说明1.2.5 QLayout类的大小
上一章我们了解了如何使用 QJson 处理 JSON 文档。QJson 是一个基于 Qt 的第三方库,适用于 Qt4 和 Qt5 两个版本。不过,如果你的应用仅仅需要考虑兼容 Qt5,其实已经有了内置的处理函数。Qt5 新增加了处理 JSON 的类,与 XML 类库类似,均以 QJson 开头,在 QtCore 模块中,不需要额外引入其它模块。Qt5 新增加六个相关类:QJsonArray封装
9.1 顺序容器:QList、QQueue和QLinkedList 本节介绍三种顺序容器:列表 QList、先进先出(First Input First Output,FIFO)队列 QQueue、链表 QLinkedList, QList 和 QLinkList 各配一个示例,示范使用方法。QList 是最为常用的,可以当作数组、队列、栈等使用,队列 QQueue 是 QList 的派生类, 增
Qt内部的d指针和q指针在讲Qt的D指针之前让我们来简单的解释一下D指针出现的目的,目的是什么呢?保证模块间的二进制兼容。什么是二进制兼容呢,简单说就是如果自己的程序使用了第三方模块,二进制兼容可以保证在修改了第三方模块之后,也就是已经改变了内存布局之后,自己的程序可以不用重新编译就能够兼容修改后的第三方模块。 二进制指的是编译生成的.so或者dll库,一旦程序编译好之后类的内存布局就确定了,兼容
线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。计算机程序常编写专门的workhorse线程执行密集计算,从而提高了程序的执行效率。今天主要介绍Qt线程四种不同的使用方式,下面结合案例具体说明一下。一、继承 QThread, 重写 run() 方法,在run()方
转载 10月前
53阅读
Qt提供了两种类型的容器类:序列容器和关联容器。例如QVector<T>,QLinkedList<T>和QList<T>属于序列容器,而QMap<K,T>和QHash<K,T>属于关联容器Qt提供了通用的算法,对这些容器类执行一些操作,如qSort()对一个序列容器进行排序,而qBinaryFind()在一个排过序的序列容器内执行二叉树
  • 1
  • 2
  • 3
  • 4
  • 5