Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt C++;和QML集成,can';我似乎无法访问属性_Qt_Qml - Fatal编程技术网

Qt C++;和QML集成,can';我似乎无法访问属性

Qt C++;和QML集成,can';我似乎无法访问属性,qt,qml,Qt,Qml,嗯。所以我以为我已经完全明白了这一点,但很明显我做错了什么,我一辈子都不明白是什么。我严格按照教程(我检查过)进行操作,但无法使其正常工作,所以在这里,让我问一个简单的问题 我创建了一个基于QObject的类,它有一个简单的QString变量,用于存储类的名称(这只是为了测试),它看起来如下所示: #include <QObject> class CategoryPane : public QObject { Q_OBJECT Q_PROPERTY(QString

嗯。所以我以为我已经完全明白了这一点,但很明显我做错了什么,我一辈子都不明白是什么。我严格按照教程(我检查过)进行操作,但无法使其正常工作,所以在这里,让我问一个简单的问题

我创建了一个基于QObject的类,它有一个简单的QString变量,用于存储类的名称(这只是为了测试),它看起来如下所示:

#include <QObject>

class CategoryPane : public QObject
{
    Q_OBJECT
    Q_PROPERTY(QString catName READ getCategoryName WRITE setCategoryName);

public:
    explicit CategoryPane(QObject *parent = 0);

    QString getCategoryName();
    void setCategoryName(QString);

signals:
    void nameChange();

private:
    QString categoryName;
};
import QtQuick 1.0
import ITI_UI 1.0

Rectangle {
    width: 300
    height: 300

    CategoryPane {
        id: whatever
        catName: "ey"
        Text {
            text: whatever.catName
        }
    }
}
但我得到以下错误:qrc:/main.qml:11:3:无法分配给不存在的默认属性

注意:如果我删除文本{}字段,我不会得到错误消息,但是我无法打印出我的名称字符串,这就是整点


提前感谢您的时间和耐心

CategoryPane被用作可视项目,但它源自QObject。您是否尝试过从QDeclarativeItem继承

如果您只想访问该属性,而不想将其用作可视项,则应能够执行以下操作:

C++:

QDeclarativeView view;
CategoryPane pane;
view.rootContext()->setContextProperty("categoryPane", &pane);
import QtQuick 1.0

Rectangle {
    width: 300
    height: 300

    Text {
        text: categoryPane.catName
    }
}
QML:

QDeclarativeView view;
CategoryPane pane;
view.rootContext()->setContextProperty("categoryPane", &pane);
import QtQuick 1.0

Rectangle {
    width: 300
    height: 300

    Text {
        text: categoryPane.catName
    }
}

昨晚,在问了这个问题大约两个小时后,我发现我必须继承QDeclarativeItem:)但我不知道rootContext()方法,谢谢!