news 2026/5/22 9:00:10

【Qt学习】基本类型、日志输出、字符串、QVariant

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【Qt学习】基本类型、日志输出、字符串、QVariant

文章目录

  • 基本数据类型
  • 日志输出
    • Qt Creator中看日志
    • 单独控制台看日志
  • 字符串类型
    • 示例
      • 字符串拼接
      • 字符串长度
  • QVariant
    • 示例
      • 变量相加
      • 自定义类型

前文回顾:
【Qt学习】Windows上环境配置与项目初识
【Qt学习】三个窗口类、坐标系、内存回收

基本数据类型

Qt基本数据类型定义在#include <QtGlobal>中,可以在帮助文档搜索QtGlobal

知道就行,不常用。
此外还有一些Qt的函数、宏。

日志输出

c使用printf,c++使用cout,qt中使用QDebug。


引入头文件QDebug,使用qDebug()函数返回一个默认的QDebug对象。

Qt Creator中看日志


此时,只有在Qt Creator中启动程序时才能看到日志。
单独只打开exe是看不到的 。

QDebug自带换行,所以后面不用添加<<std::endl,如果要添加更多换行,则使用<< "\n"

单独控制台看日志

为了打开exe也能看到,需要在pro文件中添加console,然后重新构建:

此时启动会自动打开一个控制台,里面可以看到日志:


直接打开Debug目录下的exe也会自动打开一个控制台来输出日志。

字符串类型

有两个主要的:QByteArrayQString,略,看帮助文档。

简单来说,QByteArray存字节,QString存文本(Unicode),设计两个类,是为了区分二进制数据和文本数据。

示例

字符串拼接

QString字符串拼接示例:

QString str=QString("(%1)有(%2)个徒弟,分别是(%3),(%4),(%5)。").arg("唐僧").arg(3).arg("孙悟空").arg("猪八戒").arg("沙僧");qDebug()<<str<<"\n";qDebug()<<str;

字符串长度

length()count()size()是等价的。

QString str1="我很帅123";QByteArray str2="我很帅123";qDebug()<<"QString length = "<<str1.length();//6qDebug()<<"QByteArray length = "<<str2.length();//12
  • QString的长度是按照字符数来数,一个中文长度为1.(内部用的utf-16编码,用多字节表示字符)
  • QByteArray的长度是按照字节数来数,一个中文占3个字节,英文和数字占1个字节。(内部对char*进行了浅层包装)

QVariant

QVariant是一个通用容器类,作用是在一个变量里存储多种不同类型的数据,并在需要时进行安全的类型转换和读取。

示例

变量相加

#include"mainwindow.h"#include"ui_mainwindow.h"#include<QtDebug>MainWindow::MainWindow(QWidget*parent):QMainWindow(parent),ui(newUi::MainWindow){ui->setupUi(this);intvalue=dataPlus(1,2).toInt();QString str=dataPlus("ABC","你好").toString();qDebug()<<value;//3qDebug()<<str;//"ABC你好"}MainWindow::~MainWindow(){deleteui;}QVariantMainWindow::dataPlus(QVariant a,QVariant b){QVariant c;if(a.type()==QVariant::Int&&b.type()==QVariant::Int){c=QVariant(a.toInt()+b.toInt());}elseif(a.type()==QVariant::String&&b.type()==QVariant::String){//方式1:构造函数方式// c = QVariant(a.toString() + b.toString());//方式2:赋值函数方式c.setValue(a.toString()+b.toString());}else{//简单演示,这边不写}returnc;}

自定义类型

在MainWindow头文件中自定义类型:

//自定义一个类型structPerson{intid;QString name;};//使用宏将该类型变成QVariant可以识别的类型Q_DECLARE_METATYPE(Person);

在MainWindow源文件中写调用示例:

#include"mainwindow.h"#include"ui_mainwindow.h"#include<QtDebug>MainWindow::MainWindow(QWidget*parent):QMainWindow(parent),ui(newUi::MainWindow){ui->setupUi(this);//创建Person对象Person p;p.id=100;p.name="Ken";#if0//方式1QVariant v;v.setValue(p);#else//方式2QVariant v=QVariant::fromValue(p);#endif//去除v中的数据if(v.canConvert<Person>()){Person tmp=v.value<Person>();qDebug()<<tmp.id;qDebug()<<tmp.name;}}MainWindow::~MainWindow(){deleteui;}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/22 8:55:13

2026年实用降AI率网站:实测AI率从90%降至4%的靠谱方案

一、前言&#xff1a;2026年毕业必过AIGC检测门槛 2026年国内高校对学术论文的AIGC疑似度审核全面收紧&#xff0c;绝大多数院校都发布了明确的AIGC检测数值要求&#xff1a;985、211院校规定本科论文AI率需低于20%&#xff0c;硕士论文AI率不得高于15%&#xff0c;普通高校也普…

作者头像 李华
网站建设 2026/5/22 8:51:02

四足机器人运动控制:NMPC与多任务学习融合框架

1. 四足机器人运动控制的挑战与机遇四足机器人在复杂地形中的运动能力远超轮式机器人&#xff0c;这使其在搜救、消防和服务机器人等领域展现出巨大潜力。然而&#xff0c;实现高效且适应性强的运动控制仍面临诸多挑战。四足系统具有高度非线性的动力学特性&#xff0c;12个关节…

作者头像 李华
网站建设 2026/5/22 8:48:09

深耕 Harness 工程,解锁 AI Agent 开发之路

2026三掌柜赠书活动第三十一期 Harness工程&#xff1a;从上下文管理到Agent系统构建 目录 前言 详解Harness工程核心价值与独特优势 关于《Harness工程&#xff1a;从上下文管理到Agent系统构建》 编辑推荐 内容简介 作者简介 图书目录 《Harness工程&#xff1a;从上…

作者头像 李华
网站建设 2026/5/22 8:46:05

值得推荐!西南交大学者NHANES硬核挖掘技巧,发文一区!

引 言作息越乱&#xff0c;卒中风险越高&#xff1f;多中心临床研究团队用一个相位幅值指标&#xff0c;把昼夜节律和卒中风险说透了&#xff01;思路超硬核&#xff5e;话不多说&#xff0c;速看&#xff01;ps&#xff1a;想第一时间掌握前沿思路、把握发文技巧的&#xff0…

作者头像 李华