我试图使用C++向QML公开setProperty();对象。下面是我的代码的原型:
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 (问题标题中提到的错误)有一些奇怪的错误。
你有什么想法吗?我该怎么解决?
更新--它不是ringo在下面评论中发布的内容的副本。问题不在于我不能将类转换为QVariant。我可以的。,但问题是,setProperty()不让我这么做。我必须把我的简单的东西放在那里。
发布于 2016-01-02 23:32:42
您需要使用QVariant::fromValue从指针创建QVariant:
engine.rootContext()->setProperty("myclass", QVariant::fromValue(&mc));https://stackoverflow.com/questions/34240236
复制相似问题