首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QVariant::QVariant(void*)是私有的

QVariant::QVariant(void*)是私有的
EN

Stack Overflow用户
提问于 2015-12-12 13:15:00
回答 1查看 6.3K关注 0票数 4

我试图使用C++向QML公开setProperty();对象。下面是我的代码的原型:

MyClass.h

代码语言:javascript
复制
class MyClass::public QObject
{
    Q_OBJECT

public:
    explicit MyClass(QObject *parent = 0);
    ~MyClass();

private:
    QScreen *screen;
    QPixmap myPixmap;
};

MyClass.cpp

代码语言:javascript
复制
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中的使用

代码语言:javascript
复制
QQmlApplicationEngine engine;
MyClass mc;

engine.rootContext()->setProperty("myclass", &mc);
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));

在main.qml中的使用

代码语言:javascript
复制
onClicked: mc.captureIt()

当我试图编译一些错误时,会发生错误,因为关于QVariant (问题标题中提到的错误)有一些奇怪的错误。

你有什么想法吗?我该怎么解决?

更新--它不是ringo在下面评论中发布的内容的副本。问题不在于我不能将类转换为QVariant。我可以的。,但问题是setProperty()不让我这么做。我必须把我的简单的东西放在那里。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-02 23:32:42

您需要使用QVariant::fromValue从指针创建QVariant:

代码语言:javascript
复制
engine.rootContext()->setProperty("myclass", QVariant::fromValue(&mc));
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34240236

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档