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对象转换为所需的类型。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧