我想提取一个存储在QTreeWidget列中的QIcon,如Qt :: DecorationRole。
QTreeWidgetItem *item = ui->treeWidget->topLevelItem(index);
const QIcon &icon = item->data(0, Qt::DecorationRole)._howToConvert_();
但是,我只能将数据作为QVariant获取,而我找不到从QVariant转换为QIcon的函数。有可能吗?
答案 0 :(得分:22)
好的,经过进一步检查,在the docs for QVariant
找到答案。
这有效:
QImage image = variant.value<QImage>();
我没有立即找到它,因为我搜索了QIcon / QPixmap / QImage,而且根本没有提到它们,我应该搜索QColor:)
关于GUI类型的说明
因为
QVariant
是QtCore库的一部分,所以它无法提供 转换函数到QtGui中定义的数据类型,例如QColor
,QImage
和QPixmap
。换句话说,没有toColor()
功能。 相反,您可以使用QVariant::value()
或qvariant_cast()
模板功能。例如:QVariant variant; ... QColor color = variant.value<QColor>();
逆转换(例如,从
QColor
到QVariant
)是自动的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";