C++ 正在尝试学习Qt的QML。。。以身作则

C++ 正在尝试学习Qt的QML。。。以身作则,c++,qt,qml,C++,Qt,Qml,例如。。。不知道我做错了什么。。。 使用QT+=declarative。请注意,您不需要添加“核心”和“gui”,即使QtCreator可能会自动生成这些内容,但这有点无用。注意,main.cpp中还包含mainwindow.h,但没有使用它,因此我也在下面删除了它。这对我来说很好: main.pro main.cpp #包括 #包括 #包括 #包括 #包括 #包括 int main(int argc,char*argv[]) { QDEcrativeEngine发动机; QDeclarat

例如。。。不知道我做错了什么。。。


使用QT+=declarative。请注意,您不需要添加“核心”和“gui”,即使QtCreator可能会自动生成这些内容,但这有点无用。注意,main.cpp中还包含mainwindow.h,但没有使用它,因此我也在下面删除了它。这对我来说很好:

main.pro main.cpp
#包括
#包括
#包括
#包括
#包括
#包括
int main(int argc,char*argv[])
{
QDEcrativeEngine发动机;
QDeclarativeComponent组件(&engine,“MyItem.qml”);
QObject*object=component.create();
QVariant返回值;
QVariant msg=“你好,来自C++”;
QMetaObject::invokeMethod(对象,“myQmlFunction”,
Q_RETURN_ARG(QVariant,returnedValue),
Q_ARG(QVariant,msg));

qDebug()你在<代码> > Pro < /Cube文件中添加了<代码> Qt+=声明性>代码>吗?是的…Qt+=核心GUI \声明性的事情是,如果你使用QTGrand,你告诉它创建QtQuy应用程序,它会自动生成所有C++并为你设置你的PRO文件。这允许你直接跳进QML或RVI。编辑它生成的代码。
#include <QtGui/QApplication>
#include "mainwindow.h"
#include <QtDeclarative/QDeclarativeView>
#include <QtDeclarative/QDeclarativeEngine>
#include <QtDeclarative/QDeclarativeComponent>
#include <QtDeclarative/QDeclarativeContext>
#include <QDebug>

int main(int argc, char *argv[])
{
    QDeclarativeEngine engine;
    QDeclarativeComponent component(&engine, "MyItem.qml");
    QObject *object = component.create();

    QVariant returnedValue;
    QVariant msg = "Hello from C++";
    QMetaObject::invokeMethod(object, "myQmlFunction",
            Q_RETURN_ARG(QVariant, returnedValue),
            Q_ARG(QVariant, msg));

    qDebug() << "QML function returned:" << returnedValue.toString();
    delete object;

}
// MyItem.qml
import QtQuick 1.0

Item {
    function myQmlFunction(msg) {
        console.log("Got message:", msg)
        return "some return value"
    }
}
TEMPLATE = app
SOURCES += main.cpp
QT += declarative
#include <QtGui/QApplication>
#include <QtDeclarative/QDeclarativeView>
#include <QtDeclarative/QDeclarativeEngine>
#include <QtDeclarative/QDeclarativeComponent>
#include <QtDeclarative/QDeclarativeContext>
#include <QDebug>

int main(int argc, char *argv[])
{
    QDeclarativeEngine engine;
    QDeclarativeComponent component(&engine, "MyItem.qml");
    QObject *object = component.create();

    QVariant returnedValue;
    QVariant msg = "Hello from C++";
    QMetaObject::invokeMethod(object, "myQmlFunction",
        Q_RETURN_ARG(QVariant, returnedValue),
        Q_ARG(QVariant, msg));

    qDebug() << "QML function returned:" << returnedValue.toString();
    delete object;

}