好.所以我认为我完全理解了这一点,但是我已经做了一些错误的事情,而且我不能为我的生活理解什么.我已经按照教程写了这封信(我查了一下),但是无法让它工作,所以在这里,让我问一个简单的问题.
我创建了一个基于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;
};
Run Code Online (Sandbox Code Playgroud)
这是使用以下函数注册的:qmlRegisterType("ITI_UI",1,0,"CategoryPane");
我正在尝试在QML文件中打印出我的CategoryPane类的name变量,如下所示:
import QtQuick 1.0
import ITI_UI 1.0
Rectangle {
width: 300
height: 300
CategoryPane {
id: whatever
catName: "ey"
Text {
text: whatever.catName
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是我收到以下错误:qrc:/main.qml:11:3:无法分配给不存在的默认属性
注意:如果我删除Text {}字段,我没有收到错误消息,但是我再次打印出我的名字字符串,这就是重点...
提前感谢您的时间和耐心!
CategoryPane像可视项目一样使用,但它派生自QObject.您是否尝试过继承QDeclarativeItem?
如果您只是想访问该属性而不是将其用作可视项目,您应该能够这样做:
C++:
QDeclarativeView view;
CategoryPane pane;
view.rootContext()->setContextProperty("categoryPane", &pane);
Run Code Online (Sandbox Code Playgroud)
QML:
import QtQuick 1.0
Rectangle {
width: 300
height: 300
Text {
text: categoryPane.catName
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3280 次 |
| 最近记录: |