不能在QML中使用C ++类

时间:2014-10-14 09:57:52

标签: c++ qt qml

我编写了简单的C ++类,以便在QT Quick QML中使用它。问题是我无法使用它,因为:module "org.QTPainterTest.Titler" is not installed,但我已在 main.cpp 文件中正确注册了。班级代码:

#ifndef CTITLER_H
#define CTITLER_H


    class CTitler : public QObject
    {
        Q_OBJECT
        Q_PROPERTY(QString title READ title WRITE setTitle)
    public:
        explicit CTitler(QObject *parent = 0);
        QString title() const { return mTitle; }

    signals:

    public Q_SLOTS:
        void setTitle(QString newTitle);
    private:
        QString mTitle;
    };

#endif // CTITLER_H

main.cpp

#include "ctitler.h"
#include <QtQml/QQmlApplicationEngine>
#include <QtQml/QQmlEngine>
#include <QApplication>
int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    qmlRegisterType<CTitler>("org.QTPainterTest.Titler", 1, 0, "CTitler");
    QQmlApplicationEngine engine;

    engine.load(QUrl(QStringLiteral("qrc:/main.qml")));

    return app.exec();
}

和QML:

import QtQuick 2.3
import QtQuick.Controls 1.2
import org.QTPainterTest.Titler 1.0
ApplicationWindow {
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")

    CTitler{
        id: test
    }


    Text {
        text: test.title
        anchors.centerIn: parent
    }
}

为什么会这样?如果它很有吸引力,我会使用最新的Qt和最新的QT Creator。

1 个答案:

答案 0 :(得分:0)

好的,我已经用该课程重新创建了项目。有用。问题出在前一个项目上。我不知道出了什么问题。