在C++代码中使用QML文件,需要进行以下步骤:
- 创建一个QQuickView对象,并设置其源QML文件。
QQuickView *view = new QQuickView();
view->setSource(QUrl("qrc:/main.qml"));
- 将QML中的对象与C++代码中的对象连接起来,以方便在C++代码中调用。
QObject *rootObject = view->rootObject(); // 获取QML根对象
QPushButton *button = rootObject->findChild<QPushButton*>("myButton"); // 在QML中查找名为"myButton"的按钮对象
QObject::connect(button, SIGNAL(clicked()), this, SLOT(onButtonClicked())); // 将按钮的clicked信号与C++槽函数onButtonClicked()连接起来
- 显示QML界面。
view->show();
完整的示例代码:
#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <QQuickView>
#include <QPushButton>
int main(int argc, char *argv[])
{
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
QGuiApplication app(argc, argv);
QQuickView *view = new QQuickView();
view->setSource(QUrl("qrc:/main.qml"));
QObject *rootObject = view->rootObject();
QPushButton *button = rootObject->findChild<QPushButton*>("myButton");
QObject::connect(button, SIGNAL(clicked()), &app, SLOT(quit()));
view->show();
return app.exec();
}