Qt的常见数据类型

Qt的常见数据类型

1.Qt的基本数据类型

对于Qt中的基本数据类型,虽然名称同C/C++中有所差异,但是其本质还是一致的。

可以通过源码查看其原型。

typedef int qint32;

源 码 很 清 晰 的 指 出 ,qint32本质就是int,Qt使用typedef关键字在int的基础上进行了二次封装,让其更具Qt特色。

可 以 使 用 sizeof(type) 查看对应类型占用的内存大小。

类型占用内存大小(位)说明
bool8(bit)位true/false
qint88(bit)位signed char
qint1616(bit)位signed short
qint3232(bit)位signed int
qint6464(bit)位long long int
quint88(bit)位unsigned char
quint1616(bit)位unsigned short
quint3232(bit)位unsigned int
quint6464(bit)位unsigned long long int
float32(bit)位单精度浮点数
double64(bit)位双精度浮点数
const char *32(bit)位指向字符串常亮的指针,最后不能为0

2.Qt的基本数据类

Qt作为一个框架,包含非常多的类,其封装的特点都是大写“Q”开头,再加上实体类的名字。

说明
QBitArray位数组
QBrush定义了QPainter绘制图形的填充模式
QByteArray字节数组
QColor颜色类
QDate日期类
QDateTime日期时间类
QFont字体类
QIcon图标类
QImage显示图像的类
QPicture处理图片格式的类
QPixmap处理PNG等格式图片的类
QTime提供时分秒的类
QPen画笔类,提供绘制线条的分格,厚度,颜色
QPoint坐标点类,提供处理X,Y,Z
QSize尺寸类,宽度,高度
class Q_CORE_EXPORT QBitArray
{
    friend Q_CORE_EXPORT QDataStream &operator<<(QDataStream &, const
                                                 QBitArray &);
    friend Q_CORE_EXPORT QDataStream &operator>>(QDataStream &,
                                                 QBitArray &);
    friend Q_CORE_EXPORT uint qHash(const QBitArray &key, uint seed)
        Q_DECL_NOTHROW;
    QByteArray d;
public:
    inline QBitArray() Q_DECL_NOTHROW {}
    explicit QBitArray(int size, bool val = false);
    QBitArray(const QBitArray &other) : d(other.d) {}
    inline QBitArray &operator=(const QBitArray &other) { d = other.d; return
        *this; }
    inline QBitArray(QBitArray &&other) Q_DECL_NOTHROW :
    d(std::move(other.d)) {}
    inline QBitArray &operator=(QBitArray &&other) Q_DECL_NOTHROW
    { qSwap(d, other.d); return *this; }
    inline void swap(QBitArray &other) Q_DECL_NOTHROW { qSwap(d,
                                                              other.d); }
    inline int size() const { return (d.size() << 3) - *d.constData(); }
    inline int count() const { return (d.size() << 3) - *d.constData(); }
    int count(bool on) const;
    ......
}

3.Qt的容器类

容器类都有一个比较共同的作用——存储“对象”。

虽然这些容器类的作用都是用来作为存储“对象”的容器,但是每个容器都是有自己的特点,比如是否有序,唯一,插入、查询效率的高低等,这些特点与容器的底层数据结构息息相关。

说明
QHash<Key,T>提供散列表的字典(Dictionary)的模版类
QMap<Key,T>提供二叉搜索树(Binary Search tree)字典的模版类
QPair<T1,T2>处理成对存在的项目数据的模版类
QList为操作列表形态值提供的模版类
QLinkedList提供链表的模版类
QVector为操作动态QVector数组提供的类
QStack为使用包含push(),pop(),top()的栈提供的类
QQueue为使用enqueue(),dequeue()和head()操作FIFO结构的数据提供的类
QSet为利用基于散列快速查找提供的类
QMultiMap<Key,T>继承自QMap的类,可以映射多种值
QMultiHash<Key,T>继承自QHash的类,可以利用散列映射多种值

4.Qt的字符容器类

字符容器类也属于容器范畴,它主要用于存储字符。

说明
QString字符串类,支持Unicode编码
QStringList字符串列表的集合类
QStringMatcher为查找与Unicode String字符串相对应的字符串提供的类
QStringRefsize()、position()、toString()等字符串包装(Wrapper)类
QChar支持16位Unicode字符(Character)的类
QByteArray支持字符数组的类,类似于网络文件传送、实现数据流时使用
QByteArrayMatcher利用QByterArray实现的字节数组索引查找对应字符串
QLatin1Char|QLatin1String支持US-ASCII/Latin-1编码字符串的类
QLocal将数字或字符显示方式转换为相应的多语言表达方式
QTextStream为写或读取文本提供的类,在文件中读写数据时使用

QString类源码剖析:

class Q_CORE_EXPORT QString
{
public:
    typedef QStringData Data;
    ...
        Data *d;
    ...
}

QStringData 的宏定义:

typedef QTypedArrayData<ushort> QStringData;
struct QTypedArrayData

QTypedArrayData的本质:

struct QTypedArrayData : QArrayData
{...}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值