Loading files
8a9194383This file is pinned to the selected release. Download the original to open it in your design tool.
#ifndef QPOINTERVARIANT_H
#define QPOINTERVARIANT_H
#include <QVariant>
class QPointerVariant {
public:
template <typename T> QPointerVariant(T *ptr)
: ptr(static_cast<void*>(ptr)),
variant(QVariant(*ptr)){}
void setValue(const QVariant &value) {
auto destType = variant.metaType();
if(!value.canConvert(destType)) {
throw std::runtime_error("Unable to convert QVariant to requested type");
}
variant = value;
variant.convert(destType);
QMetaType mt(destType);
mt.construct(ptr, variant.constData());
}
QVariant value() {
return QVariant(variant.metaType(), ptr);
}
void* getPtr(){return ptr;}
private:
void *ptr;
QVariant variant;
};
#endif // QPOINTERVARIANT_H