Q_PROPERTY无法正常工作

时间:2014-04-02 15:42:17

标签: c++ qt blackberry blackberry-10 qproperty

我正在开发一个级联的bb10应用程序。 这是头文件的片段

//applicationui.hpp
Q_PROPERTY(int metric READ getMetric WRITE setMetric NOTIFY metricChanged)
public:
    int getMetric();
    void setMetric(int newMetric);

signals:
void metricChanged(int);
private:
    int m_metric;


//applicationui.cpp
ApplicationUI::ApplicationUI(bb::cascades::Application *app) :
    QObject(app)
{
    qml->setContextProperty("_app", this);
    // Set created root object as the application scene
    app->setScene(root);

    m_metric = 1;

}

int ApplicationUI::getMetric(){
    return m_metric;
}

void ApplicationUI::setMetric(int newMetric){
m_metric = newMetric;
emit metricChanged(m_metric);
}

在我的main.qml中,我有一个RadioGroup,我想根据度量值设置selectedIndex

RadioGroup {
                id: distanceMetric
                Option { id: option1; text: "Miles"}
                Option { id: option2; text: "Kilometers"}
                onCreationCompleted: {
                    distanceMetric.selectedIndex = _app.metric
                }
 }

但这似乎没有按预期工作。 任何建议,将不胜感激。感谢名单

2 个答案:

答案 0 :(得分:1)

你的类是否继承了QObject(我想它必须因为它似乎是一个小部件)?

您是否包含Q_OBJECT宏?

如果以上都不能解决您的问题,那么doc可能会有所帮助吗?我不是说RTFM,有时如果你使用的是网站版的文档,我觉得找东西有点困难。

答案 1 :(得分:1)

我怀疑在将指标值设置为1之前正在创建您的QML场景。尝试更改此内容:

m_metric = 1;

到此:

setMetric(1);

以便可以通知QML绑定更改。