QVariant的强大用法

目录

1. 存储数据:

2. 获取数据:

3. 判断数据类型:

4. 设置数据:

5. 判断数据是否有效:

6.附上一个例子演示:


QVariant 是 Qt 框架中的一种数据类型,它可以用来存储任意类型的数据。QVariant 是一个通用的数据容器,它可以存储基本数据类型(如 int、float 等)、

(1)C++基本类型,如 int、float等。

(2)Qt的数据类型,包括QBrush、QColor、QCursor、QDate、QTime、QDateTime、QFont、QKeySequence、 QPalette、QPen、QPixmap、QPoint、QRect、QRegion、QSize、QString、QUrl、QImage 等 Qt 类型,以及用户自定义的类型。

使用 QVariant 可以方便地实现类型转换和数据共享。QVariant 提供了一些方法用于获取和设置数据,如 toInt、toFloat、toString、toDate、toTime、toDateTime、toUrl、toImage 等方法。此外,QVariant 还提供了一些方法用于判断数据类型,如 isNull、isValid、canConvert 等方法。

以下是 QVariant 的常见用法:

1. 存储数据:

QVariant var = 10; // 存储整型数据
QVariant var2 = "hello world"; // 存储字符串数据
QVariant var3 = QDateTime::currentDateTime(); // 存储日期时间数据

2. 获取数据:

int value = var.toInt(); // 获取整型数据
QString str = var2.toString(); // 获取字符串数据
QDateTime dateTime = var3.toDateTime(); // 获取日期时间数据

3. 判断数据类型:

if (var.type() == QVariant::Int) {
    // 数据类型为整型
}
if (var2.canConvert<QString>()) {
    // 数据可以转换为字符串类型
}

4. 设置数据:

var.setValue(20); // 设置整型数据
var2.setValue("new value"); // 设置字符串数据
var3.setValue(QDateTime::currentDateTime()); // 设置日期时间数据

5. 判断数据是否有效:

if (var.isNull()) {
    // 数据为空
}
if (var.isValid()) {
    // 数据有效
}

总之,QVariant 是一个非常方便的数据容器,可以用于存储和获取各种类型的数据。在 Qt 编程中,QVariant 经常被用于数据传递和类型转换。

6.附上一个例子演示:

//声明类型

#define ITEM_ID         Qt::UserRole +1

#define ITEM_ADD        Qt::UserRole +2

#define ITEM_INDEX      Qt::UserRole +3

#define ITEM_IMG        Qt::UserRole +4

//存数据

QListWidgetItem* item = new QListWidgetItem();

item->setData(ITEM_ID, "id");

item->setData(ITEM_ADD, false);

item->setData(ITEM_INDEX, 1);

QPixmap pix = QPixmap("xx/xx.png")

item->setData(ITEM_IMG, pix);

//取数据

QString id = widgetItem->data(ITEM_ID).toString();

bool add = widgetItem->data(ITEM_ADD).toBool();

QString index = widgetItem->data(ITEM_INDEX).toInt();

QPixmap pix = widgetItem->data(ITEM_IMG).value<QPixmap>();

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值