これは、StackOverflow に関する私の最初の投稿です。フォーマットの間違いがあった場合はご容赦ください。
Qt Quick Controls 1.1 を使用して Qt Quick UI プロジェクトを構築しています。QML コードに C++ アクション クラスに呼び出したい単純なボタンがあります。Qt の以前のバージョンでこれに関する多くの例を見ましたが、5.3 では動作しないようです。プロジェクト設定で Qt Quick Controls 1.1 を選択しました。これはそれほど複雑ではないはずですが、QtCreator 5.3 を使用した例が見つからないようです。
ここに私の main.qml ファイルがあります:
import QtQuick 2.2
import QtQuick.Controls 1.1
import QtQuick.Layouts 1.1
ApplicationWindow {
id: parentWnd
visible: true
width: 640
height: 480
Action {
id: actionSend
onTriggered: console.log("SEND")
}
Button {
id: send
text: "Send Request"
action: actionSend
signal sendSignal()
}
}
ここに私のmain.cppがあります:
#include <QApplication>
#include <QQmlApplicationEngine>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QQmlApplicationEngine engine;
engine.load(QUrl(QStringLiteral("qrc:///main.qml")));
return app.exec();
}
QMLボタンで「doSend」を呼び出すアクションクラスは次のとおりです。
#include<QDebug>
#include<QObject>
class Action : public QObject
{
Q_OBJECT
public:
Action();
public slots:
void doSend();
};
最後に、ここに私のプロジェクトファイルがあります:
TEMPLATE = app
QT += qml quick widgets
SOURCES += main.cpp \
action.cpp
RESOURCES += qml.qrc
# Additional import path used to resolve QML modules in Qt Creator's code model
QML_IMPORT_PATH =
# Default rules for deployment.
include(deployment.pri)
HEADERS += \
action.h
これを実行すると、ボタンが表示され、コンソールへの「SEND」のログが表示されるので、QML アクションが正しく設定されていることがわかります。私のアクションクラスにアクション呼び出しを行う方法についての助けをいただければ幸いです!