Qt中的基础数据类型

1.基础类型

        因为Qt是一个C++ 框架, 因此C++中所有的语法和数据类型在Qt中都是被支持的, 但是Qt中也定义了一些属于自己的数据类型, 下边给大家介绍一下这些基础的数类型

        QT基本数据类型定义在#include <QtGlobal> 中,QT基本数据类型有:

类型名称 注释 备注
qint8 signed char 有符号8位数据
qint16 signed short 16位数据类型
qint32 signed int 32位有符号数据类型
qint64 long long int 或(__int64) 64位有符号数据类型,Windows中定义为__int64
qintptr qint32 或 qint64 指针类型 根据系统类型不同而不同,32位系统为qint32、64位系统为qint64
qlonglong   long long int 或(__int64) Windows中定义为__int64
qptrdiff qint32 或 qint64 根据系统类型不同而不同,32位系统为qint32、64位系统为qint64
qreal double 或 float 除非配置了-qreal float选项,否则默认为double
quint8 unsigned char 无符号8位数据类型
quint16 unsigned short 无符号16位数据类型
quint32     unsigned int 无符号32位数据类型
quint64     unsigned long long int 或 (unsigned __int64)     无符号64比特数据类型,Windows中定义为unsigned __int64
quintptr    quint32 或 quint64     根据系统类型不同而不同,32位系统为quint32、64位系统为quint64
qulonglong    unsigned long long int 或 (unsigned __int64)    Windows中定义为__int64
uchar        unsigned char     无符号字符类型
 
uint    unsigned int  无符号整型
ulong    unsigned long     无符号长整型
 
ushort     unsigned short    无符号短整型

2.log输出

2.1 在调试窗口中输入日志

        在Qt中进行log输出, 一般不使用c中的printf, 也不是使用C++中的cout, Qt框架提供了专门用于日志输出的类, 头文件名为 QDebug, 使用方法如下:

 创建一个新项目:添加头文件#include <QDebug> 

        qDebug() << "I'm rich" << "*" << 100000000;

运行结果:会在窗口下面应用程序输出下输出我们输入的数据:

2.2 在终端窗口中输出日志

如果想要数据在调试窗口中输出:

(1)点开.pro文件:在CONFIG += c++17 后面添加 console

 (2)点击项目右键选择重新构造

(3)在Windows上再次编译就会出现一个调试窗口了, MacOS没有调试窗口。

3.字符串类型

        在Qt中不仅支持C, C++中的字符串类型, 而且还在框架中定义了专属的字符串类型, 我们必须要掌握在Qt中关于这些类型的使用和相互之间的转换

语言类型 字符串类型
C char *
C++ std::string 、char *
Qt QByteArray, QString 等

3.1 QByteArray

        在Qt中QByteArray可以看做是c语言中 char*的升级版本。我们在使用这种类型的时候可通过这个类的构造函数申请一块动态内存,用于存储我们需要处理的字符串数据

QByteArray构造函数:

// 构造空对象, 里边没有数据
QByteArray::QByteArray();
 

// 将data中的size个字符进行构造, 得到一个字节数组对象
// 如果 size==-1 函数内部自动计算字符串长度, 计算方式为: strlen(data)

QByteArray::QByteArray(const char *data, int size = -1);
 

// 构造一个长度为size个字节, 并且每个字节值都为ch的字节数组
QByteArray::QByteArray(int size, char ch);

QByteArray数据操作:

// 在尾部追加数据
// 其他重载的同名函数可参考Qt帮助文档, 此处略

QByteArray &QByteArray::append(const QByteArray &ba);
void QByteArray::push_back(const QByteArray &other);

// 头部添加数据
// 其他重载的同名函数可参考Qt帮助文档, 此处略

QByteArray &QByteArray::prepend(const QByteArray &ba);
void QByteArray::push_front(const QByteArray &other);

// 插入数据, 将ba插入到数组第 i 个字节的位置(从0开始)
// 其他重载的同名函数可参考Qt帮助文档, 此处略

QByteArray &QByteArray::insert(int i, const QByteArray &ba);

// 删除数据
// 从大字符串中删除len个字符, 从第pos个字符的位置开始删除

QByteArray &QByteArray::remove(int pos, int len);
 

// 从字符数组的尾部删除 n 个字节
void QByteArray::chop(int n);
 

// 从字节数组的 pos 位置将数组截断 (前边部分留下, 后边部分被删除)
void QByteArray::truncate(int pos);
 

// 将对象中的数据清空, 使其为null
void QByteArray::clear();

// 字符串替换
// 将字节数组中的 子字符串 before 替换为 after
// 其他重载的同名函数可参考Qt帮助文档, 此处略

QByteArray &QByteArray::replace(const QByteArray &before, const QByteArray &after);

 QByteArray子字符串查找和判断:

// 判断字节数组中是否包含子字符串 ba, 包含返回true, 否则返回false
bool QByteArray::contains(const QByteArray &ba) const;
bool QByteArray::contains(const char *ba) const;
 

// 判断字节数组中是否包含子字符 ch, 包含返回true, 否则返回false
bool QByteArray::contains(char ch) const;

// 判断字节数组是否以字符串 ba 开始, 是返回true, 不是返回false
bool QByteArray::startsWith(const QByteArray &ba) const;
bool QByteArray::startsWith(const char *ba) const;
 

// 判断字节数组是否以字符 ch 开始, 是返回true, 不是返回false
bool QByteArray::startsWith(char ch) const;

// 判断字节数组是否以字符串 ba 结尾, 是返回true, 不是返回false
bool QByteArray::endsWith(const QByteArray &ba) const;
bool QByteArray::endsWith(const char *ba) const;
 

// 判断字节数组是否以字符 ch 结尾, 是返回true, 不是返回false
bool QByteArray::endsWith(char ch) const;

QByteArray遍历:

// 使用迭代器
iterator QByteArray::begin();
iterator QByteArray::end();

// 使用数组的方式进行遍历
// i的取值范围 0 <= i < size()

char QByteArray::at(int i) const;
char QByteArray::operator[](int i) const;

QByteArray查看字节数:

// 返回字节数组对象中字符的个数
int QByteArray::length() const;
int QByteArray::size() const;
int QByteArray::count() const;

// 返回字节数组对象中 子字符串ba 出现的次数
int QByteArray::count(const QByteArray &ba) const;
int QByteArray::count(const char *ba) const;
 

// 返回字节数组对象中 字符串ch 出现的次数
int QByteArray::count(char ch) const;

 QByteArray类型转换:

// 将QByteArray类型的字符串 转换为 char* 类型
char *QByteArray::data();
const char *QByteArray::data() const;

// int, short, long, float, double -> QByteArray
// 其他重载的同名函数可参考Qt帮助文档, 此处略

QByteArray &QByteArray::setNum(int n, int base = 10);
QByteArray &QByteArray::setNum(short n, int base = 10);
QByteArray &QByteArray::setNum(qlonglong n, int base = 10);
QByteArray &QByteArray::setNum(float n, char f = 'g', int prec = 6);
QByteArray &QByteArray::setNum(double n, char f = 'g', int prec = 6);
[static] QByteArray QByteArray::number(int n, int base = 10);
[static] QByteArray QByteArray::number(qlonglong n, int base = 10);
[static] QByteArray QByteArray::number(double n, char f = 'g', int prec = 6);

// QByteArray -> int, short, long, float, double
int QByteArray::toInt(bool *ok = Q_NULLPTR, int base = 10) const;
short QByteArray::toShort(bool *ok = Q_NULLPTR, int base = 10) const;
long QByteA

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
QT,可以使用C++结合QT的Model/View框架来实现基础数据类型的插入、查询和删除操作。下面是一个简单的示例,展示了如何使用C++和QT的Model/View框架来实现这些操作: 1. 创建数据模型类:首先,您需要创建一个继承自QAbstractTableModel的自定义数据模型类。在该类,您可以重写以下函数: - rowCount():返回数据模型的行数。 - columnCount():返回数据模型的列数。 - data():返回指定索引置的数据。 - setData():设置指定索引置的数据。 2. 实现插入操作:为了实现插入操作,您可以在自定义数据模型类添加一个函数,用于向数据模型插入新的数据。在该函数,您需要更新数据模型的数据,并发出相应的信号来通知视图更新。 3. 实现查询操作:为了实现查询操作,您可以在自定义数据模型类添加一个函数,用于根据指定条件查询数据。在该函数,您可以遍历数据模型的数据,并返回满足条件的结果集。 4. 实现删除操作:为了实现删除操作,您可以在自定义数据模型类添加一个函数,用于删除指定索引置的数据。在该函数,您需要从数据模型删除对应的数据,并发出相应的信号来通知视图更新。 5. 在界面使用数据模型:在您的界面,可以使用QTableView或其他相关的视图类来展示数据模型。将自定义的数据模型对象设置给视图,并通过视图来实现用户与数据的交互。 通过上述步骤,您可以使用C++结合QT的Model/View框架来实现基础数据类型的插入、查询和删除操作。希望这个简单的示例对您有帮助!如果您还有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lune_one

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值