QVariant到QIcon / QPixmap / QImage

时间:2013-05-31 13:59:12

标签: c++ qt qvariant

我想提取一个存储在QTreeWidget列中的QIcon,如Qt :: DecorationRole。

QTreeWidgetItem *item = ui->treeWidget->topLevelItem(index);
const QIcon &icon = item->data(0, Qt::DecorationRole)._howToConvert_();

但是,我只能将数据作为QVariant获取,而我找不到从QVariant转换为QIcon的函数。有可能吗?

2 个答案:

答案 0 :(得分:22)

好的,经过进一步检查,在the docs for QVariant找到答案。

这有效:

QImage image = variant.value<QImage>();

我没有立即找到它,因为我搜索了QIcon / QPixmap / QImage,而且根本没有提到它们,我应该搜索QColor:)

  

关于GUI类型的说明

     

因为QVariant是QtCore库的一部分,所以它无法提供   转换函数到QtGui中定义的数据类型,例如QColor,   QImageQPixmap。换句话说,没有toColor()功能。   相反,您可以使用QVariant::value()qvariant_cast()   模板功能。例如:

QVariant variant;
...
QColor color = variant.value<QColor>();
     

逆转换(例如,从QColorQVariant)是自动的   QVariant支持的所有数据类型,包括与GUI相关的类型:

QColor color = palette().background().color();
QVariant variant = color;

答案 1 :(得分:0)

我找到的解决方案如下:

QImage name_image = table_store_multi_model_->item(i_row,0)->data(Qt::DecorationRole).value().toImage();

一般我们用data()读取数据,但是这里需要一个参数"Qt::DecorationRole";