(1)Qt的基本数据类型以及基本输出

基础类型

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

类型名称注释备注
qint8signed char有符号8位数据
qint16signed short16位数据类型
qint32signed short32位有符号数据类型
qint64long long int 或(__int64)64位有符号数据类型,Windows中定义为__int64
qintptrqint32 或 qint64指针类型 根据系统类型不同而不同,32位系统为qint32、64位系统为qint64
qlonglonglong long int 或(__int64)Windows中定义为__int64
qptrdiffqint32 或 qint64根据系统类型不同而不同,32位系统为qint32、64位系统为qint64
qrealdouble 或 float除非配置了-qreal float选项,否则默认为double
quint8unsigned char无符号8位数据类型
quint16unsigned short无符号16位数据类型
quint32unsigned int无符号32位数据类型
quint64unsigned long long int 或 (unsigned __int64)无符号64比特数据类型,Windows中定义为unsigned __int64
quintptrquint32 或 quint64根据系统类型不同而不同,32位系统为quint32、64位系统为quint64
qulonglongunsigned long long int 或 (unsigned __int64)Windows中定义为__int64
ucharunsigned char无符号字符类型
uintunsigned int无符号整型
ulongunsigned long无符号长整型
ushortunsigned short无符号短整型
qsizetypesize_tunsigned __int64 类型

 log输出

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

1. qDebug(调试信息提示)

qDebug("调试信息输出: %d",age);		// C风格
qDebug() << "输出调试信息: " << age;	// C++风格

qDebug的注意事项:

        流的形式输出会自动在数据之间加上空格

        输出之后会自动插入换行

        输出(QString)字符串会在字符串之间加上双引号

 如何取消流的形式输出时数据间的空格呢?

qDebug() << "输出调试信息: " << age;	            // 未取消数据间空格
qDebug().nospace() << "输出调试信息: " << age;	// 取消数据间的空格

 

 如何取消输出字符串(QString)时的双引号呢?

QString str = "Hello World";
qDebug() << str;
qDebug().noquote() << str;

 

 2. qInfo(输出信息)

int num = 1001;
qInfo("qInfo输出%d",num);
qInfo() << "qInfo输出" << num;

 

 3. qWarning(一般的警告提示)

qWarning("qWarning输出%d", num);
qWarning() << "qWarning输出" << num;

 

4. qCritical(严重的错误提示)

qCritical("qCritical输出%d", num);
qCritical() << "qCritical输出" << num;

  

 5. qFatal(致命错误提示,会直接中断程序)

//qFatal() 不能使用流的方式输出
qFatal("qFatal输出");
qInfo() << "如果没有中断,我就输出来了";

 抑制输出的方式

//5. 抑制QDebug输出
	qInfo() << "qInfo输出......";
	qDebug() << "qDebug输出";
	qDebug("qDebug输出2......");
	qInfo("qInfo输出2......");

方式1:使用宏的方式抑制输出

#define QT_NO_DEBUG_OUTPUT    // 放到代码文件的最开头位置

方式2:配置CMakeLists.txt文件的方式抑制输出

#在配置文件中添加宏定义抑制输出
add_compile_definitions(QT_NO_DEBUG_OUTPUT)

  

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
可以使用可变参数模板来实现这个功能,示例代码如下: ```cpp #include <iostream> #include <vector> template<typename... Args> void printList(Args... args) { std::vector<std::vector<int>> intLists; std::vector<std::vector<float>> floatLists; // 通过模板递归展开参数包 auto processArg = [&](auto arg) { if constexpr (std::is_same_v<decltype(arg), std::vector<int>>) { intLists.push_back(arg); } else if constexpr (std::is_same_v<decltype(arg), std::vector<float>>) { floatLists.push_back(arg); } else if constexpr (std::is_arithmetic_v<decltype(arg)>) { std::cout << arg << " "; } }; (processArg(args), ...); // 输出链表数组 for (const auto& intList : intLists) { std::cout << "["; for (const auto& item : intList) { std::cout << item << " "; } std::cout << "] "; } for (const auto& floatList : floatLists) { std::cout << "["; for (const auto& item : floatList) { std::cout << item << " "; } std::cout << "] "; } std::cout << std::endl; } int main() { std::vector<int> intList1 = {1, 2, 3}; std::vector<float> floatList1 = {1.2f, 2.3f, 3.4f}; std::vector<int> intList2 = {4, 5, 6}; int intNum = 7; float floatNum = 8.9f; // 调用接口,可以接收任意个数和类型的参数 printList(intList1, floatList1, intList2, intNum, floatNum); return 0; } ``` 在上述代码中,我们定义了一个可变参数模板函数 `printList`,它接收任意个数和类型的参数 `args`。我们通过模板递归展开参数包,将不同类型的参数分别存储到 `intLists` 和 `floatLists` 中,然后输出整个链表数组。在调用这个接口时,可以传入任意个数和类型的参数,包括链表数组和基本数据类型

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

石小浪♪

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

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

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

打赏作者

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

抵扣说明:

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

余额充值