Qt中的QVariant示例
对标准类型
在mainwindow.h中的public添加函数声明:
// 两个变量进行加法运算,变量可以是正行,也可能是字符串
QVariant dataPlus(QVariant a, QVariant b);
在mainwindow.cpp中编写如下代码:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
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;
}
MainWindow::~MainWindow()
{
delete ui;
}
QVariant MainWindow::dataPlus(QVariant a, QVariant b)
{
QVariant ret;
// 判断当前参数的类型是字符串还是整形数
if(a.type() == QVariant::Int && b.type() == QVariant::Int)
{
ret = QVariant(a.toInt() + b.toInt());
}
else if(a.type() == QVariant::String && b.type() == QVariant::String)
{
ret.setValue(a.toString() + b.toString());
}
return ret;
}
对自定义类型
先在.h文件中
struct Person
{
int id;
QString name;
};
在cpp文件中
// 创建Person对象
Person p;
p.id = 250;
p.name = "张三疯";
#if 1
QVariant v;
v.setValue(p);
#else
QVariant v = QVariant::fromValue(p);
#endif
// 取出v对象中的数据
if(v.canConvert<Person>())
{
Person tmp = v.value<Person>();
qDebug() << "id: " << tmp.id << ", name: " << tmp.name;
}
QVariant_canconvert是Qt框架中的一个函数,用于确定QVariant对象是否可以转换为特定类型的数据。如果QVariant对象可以转换为指定类型,则返回true;否则返回false。该函数通过使用QMetaType或特定类型的元对象来检查对象的类型。可以使用该函数来查找适当的转换程序以将QVariant对象转换为所需的类型。

浙公网安备 33010602011771号