Qt日志输出

目录

 

Qt中日志输出:

普通输出

 在控制台输出

 使用QString与.arg方法输出有占位的字符串:

使用QVariant对Qt中标准类型数据进行处理举例

 QVariant也可以处理自定义类型


 

Qt中日志输出:

普通输出

在头文件#include<QDebug>中。

qDebug()<<"学习"<<"×"<<24<<"h";

在编译输出中输出:

0ff36f6ba4dc4879829b3c4b233d25b4.png

 在控制台输出

在自己创建的pro文件中添加一句话,以及勾选项目里的框框:

e91553ef96904afeb107d61968de702a.png

 a364f40e973440bab6f98ab80aaa84e1.png

 5de1e6430b7949e7ab64f4db3b14379b.png

 于是有:

b4cf16d514f14c568cf846d79ed61229.png

 没有这一行字的话可以选择重新构建程序试试。

7e03774797924c85987eeba213d1f847.png

 这样即使是用exe也可以查看:

5b035acb133a4dd1bd891f1029bc0fbe.png

 查看qt文件,也有其他的输出语法:

05706270c7a14aeea1bc2fd5f2b98739.png

 使用QString与.arg方法输出有占位的字符串:

    QString str=QString("(%1)早上吃了(%2)碗粥").arg("妈妈").arg("1");
    qDebug()<<"输出的字符串是:"<<str;

输出:

e8a17a5d9abb4646a92d4ada74742583.png

使用QVariant对Qt中标准类型数据进行处理举例

QVariant能对Qt中的多种类型进行包装。当不同类型数据进行加减等运算,转换成QVariant类型后只需要提供一个API了。(可以理解为联合体)

在mainwindow头文件中添加测试函数:

    //在头文件中添加测试函数:两个变量进行加法运算,变量可能是整型,也可能是字符串,再Alt+回车去编辑函数
    QVariant dataplus(QVariant a,QVariant b);

1e2b40384e374447bb89cfa08f5cc248.png

 在mainwindow.cpp文件中添加函数:

QVariant MainWindow::dataplus(QVariant a, QVariant b)
{
    QVariant ret;   //定义一个QVariant类型的变量
    //判断当前参数类型是字符串还是整数型,通过type方法进行判断
    if(a.type()==QVariant::Int && b.type()==  QVariant::Int)  //如果是int类型,则数值相加
    {
        ret=QVariant(a.toInt()+b.toInt());  //转换成实际的整型数相加再转还回QVariant类型
    }
    else if(a.type()==QVariant::String && b.type()==  QVariant::String)  //如果是string类型,则字符串相加
    {
        ret.setValue(a.toString()+b.toString());  //相加后转换成setValue类型
    }
    return ret; //返回ret值
}

在mainwindow函数里调用;

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    //整数型
    int value=dataplus(10,20).toInt();
    //字符串
    QString str=dataplus("hello","world").toString();
    qDebug()<<"int value:"<<value;
    qDebug()<<"String value:"<<str;
}

b61bfc6f9fdf47848bc7736d62044f73.png

 76b63be165cf453a939571b89926013f.png

 运行一下看看对不对:

45dd02d1cbe141219419ac333e891c2a.png

 QVariant也可以处理自定义类型

在头文件定义我们自己设计的类型,我们选择用结构体:

struct Person
{
    int id;
    QString name;
};
Q_DECLARE_METATYPE(Person)  //Qt不知道有这种类型,使用宏进行声明

在原cpp文件中创建并取出:

    //创建Person对象
    Person p;
    p.id=666;
    p.name="Q先生";   //定义p对象中的两个成员
//两种打包方式
#if 0
    QVariant v;
    v.setValue(p);
#else
    QVariant v=QVariant::fromValue(p);  //调用fromValue的静态方法
#endif
    //取出v对象中的数据
    if(v.canConvert<Person>())  //判断v中的这个数据能转换成Person类型,则调用value方法进行转换
    {
        Person tmp=v.value<Person>();   //取出来的转换为Person类型
        qDebug()<<"id:"<<tmp.id<<",name"<<tmp.name;
    }

987bef5ac0d54fd189c8428614a1d032.png

 c7015adec1ca49889ad036ed019ee732.png

 输出:

c601b46de3d14daa8fdfa2168c0c4f46.png

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值