QVariant::QVariant(void*)是私有的
QVariant::QVariant(void*) is private
我正试图使用setProperty();
将C++对象公开给QML。这是我的代码原型:
MyClass.h
class MyClass::public QObject
{
Q_OBJECT
public:
explicit MyClass(QObject *parent = 0);
~MyClass();
private:
QScreen *screen;
QPixmap myPixmap;
};
MyClass.cpp
MyClass::MyClass (QObject *parent) : QObject(parent)
{
screen = QGuiApplication::primaryScreen();
}
MyClass::~MyClass()
{
}
void MyClass::captureIt()
{
myPixmap = screen->grabWindow(0);
myPixmap.save("/home/john/Pictures/screen.png");
}
在main.cpp中的使用
QQmlApplicationEngine engine;
MyClass mc;
engine.rootContext()->setProperty("myclass", &mc);
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
在main.qml中的使用
onClicked: mc.captureIt()
当我试图编译时,会发生一些错误,因为QVariant
(问题标题中提到的那个)出现了奇怪的错误。
你知道我该怎么解决吗?
更新这不是林戈在下面评论中发布的内容的重复。问题不在于我不能将我的类转换为QVariant
。我可以但问题是setProperty()
不允许我这么做。我必须把我的纯对象放在那里。
您需要使用QVariant::fromValue
从指针创建QVariant:
engine.rootContext()->setProperty("myclass", QVariant::fromValue(&mc));
相关文章:
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- 在c++类上调用void函数
- 为什么野牛仍在使用"int yylex(void)",却找不到"int yylex(YYS
- 在派生函数中指定void*参数
- C++为什么尽管我调用了void函数,它却不起作用
- 如何从void函数输出字符串
- 我应该使用什么来代替void作为变体中的替代类型之一
- 奇怪的结构&GCC&clang(void*返回类型)
- Arduino:for/while/if在void setup()或void loop()之前?——错误:之前需要不合格
- 为什么这个函数将"const char*"转换为"void* const"而不是"const void*"
- 引用一个已擦除类型(void*)的指针
- 将尾部调用void(i32,..)位转换为llvm::函数以获取FnAttribute
- 库函数需要一个 std::function<void(void)>,如何传入类函数?
- 如何将指针从一个void函数传递到另一个C++
- 为什么我在使用void函数时得到错误代码C2276
- void*到驱动程序中的UnicodeString
- 为什么在逗号分隔符上下文中将预增量的结果强制转换为void
- 指针没有更新它在void函数内部指向的值
- 不能将 "void *" 类型的值分配给类型 "TCHAR" 的实体
- QVariant::QVariant(void*)是私有的