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对象转换为所需的类型。

posted @   朱英浩  阅读(123)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
点击右上角即可分享
微信分享提示