目录
Qt中日志输出:
普通输出
在头文件#include<QDebug>中。
qDebug()<<"学习"<<"×"<<24<<"h";
在编译输出中输出:
在控制台输出
在自己创建的pro文件中添加一句话,以及勾选项目里的框框:
于是有:
没有这一行字的话可以选择重新构建程序试试。
这样即使是用exe也可以查看:
查看qt文件,也有其他的输出语法:
使用QString与.arg方法输出有占位的字符串:
QString str=QString("(%1)早上吃了(%2)碗粥").arg("妈妈").arg("1");
qDebug()<<"输出的字符串是:"<<str;
输出:
使用QVariant对Qt中标准类型数据进行处理举例
QVariant能对Qt中的多种类型进行包装。当不同类型数据进行加减等运算,转换成QVariant类型后只需要提供一个API了。(可以理解为联合体)
在mainwindow头文件中添加测试函数:
//在头文件中添加测试函数:两个变量进行加法运算,变量可能是整型,也可能是字符串,再Alt+回车去编辑函数
QVariant dataplus(QVariant a,QVariant b);
在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;
}
运行一下看看对不对:
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;
}
输出: