QVariant для QIcon / QPixmap / QImage

Я хочу извлечь QIcon, который я сохранил в одном из столбцов QTreeWidget, как Qt :: DecorationRole.

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

Однако я могу получить данные только как QVariant и не могу найти функцию для преобразования из QVariant в QIcon. Возможно ли это сделать?

12

Решение

Ок, нашел ответ в документы для QVariant после дальнейшего осмотра.

Это работает:

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

Я не нашел его сразу, потому что я искал QIcon / QPixmap / QImage, и они вообще не упоминаются, я должен был вместо этого искать QColor 🙂

Примечание о типах графического интерфейса

Так как 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;
22

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]