J'essaie d'exposer l'objet C++ à QML en utilisant setProperty();
. Voici un prototype de mon code:QVariant :: QVariant (void *) est privé
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");
}
d'utilisation dans main.cpp
QQmlApplicationEngine engine;
MyClass mc;
engine.rootContext()->setProperty("myclass", &mc);
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
utilisation dans main.qml
onClicked: mc.captureIt()
Quand je tente de compiler quelque chose de mal arrive, parce qu'il ya erreur d'étrange QVariant
(celui mentionné dans le titre de la question).
Avez-vous l'intention de résoudre ce problème?
Mise à jour Ce n'est pas une copie de ce que Ringo a posté dans les commentaires ci-dessous. Le problème n'est pas que je ne peux pas convertir ma classe en QVariant
. Je peux. Mais le problème est que setProperty()
ne me laisse pas le faire. Je dois y mettre mon objet parfaitement uni.
double possible de [Stockages pointeurs en utilisant QListWidgetItem :: setData] (http://stackoverflow.com/questions/9248001/storing- pointers-using-qlistwidgetitemsetdata) –
@ ringø, pouvez-vous expliquer comment est-ce le double de ce que j'ai demandé? – pushandpop
S'il vous plaît lire la question jusqu'au fond, même problème. Alors lisez la réponse qui peut vous aider ... –