gpt4 book ai didi

c++ - QVariant::QVariant(void*) 是私有(private)的

转载 作者:行者123 更新时间:2023-12-02 06:27:53 26 4
gpt4 key购买 nike

我正在尝试使用 setProperty(); 将 C++ 对象公开给 QML。这是我的代码的原型(prototype):

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");
}

ma​​in.cpp中的用法

QQmlApplicationEngine engine;
MyClass mc;

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

ma​​in.qml 中的用法

onClicked: mc.captureIt()

当我尝试编译时,发生了一些错误,因为QVariant(问题标题中提到的那个)出现了奇怪的错误。

你知道我该如何解决这个问题吗?

更新这与 Ringo 在下面的评论中发布的内容并不重复。问题不在于我无法将我的类转换为 QVariant。我可以。 但问题是 setProperty() 不允许我这样做。我必须把我的简单对象放在那里。

最佳答案

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

engine.rootContext()->setProperty("myclass", QVariant::fromValue(&mc));

关于c++ - QVariant::QVariant(void*) 是私有(private)的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34240236/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com