はここに私のコードです(と言って、コンパイルしない:main.cppにに接続しマーキングしながら、「『』の前にトークンプライマリ表現を期待」)QT - CPPコンストラクタへの接続QML]ボタンをクリックして
main.cppに
QObject *myButton = engine.rootObjects().first() -> findChild<QObject*>("btn");
QObject::connect(myButton, SIGNAL(clicked()), MyClass, SLOT(MyClass()));
main.qml
ApplicationWindow {
id: appWindow
visible: true
width: 850; height: 500
Button
{
objectName: btn
anchors.centerIn: parent
}
}
ボタンをクリックするたびにcppクラスのMyClassをインスタンス化したい。。
以前は別のことをしましたが、アプリケーションが実行されているときにMyClassをインスタンス化するという問題がありました。ボタンがクリックされたときではありませんでした。さらに、コンストラクタを呼び出すことはできませんでしたが、Q_INVOKABLEパブリックメソッドのみを呼び出すことができました。
main.cppに
MyClass myClass;
engine.rootContext() -> setContextProperty("_btn", &myClass);
main.qml
ApplicationWindow {
id: appWindow
visible: true
width: 850; height: 500
Button
{
objectName: btn
anchors.centerIn: parent
onClicked: _btn.myMethod() //where myMethod is a Q_INVOKABLE public method belonging to MyClass.
}
}