-2

我正在级联开发一个 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
                }
 }

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

4

2 回答 2

1

我怀疑您的 QML 场景是在您将度量值设置为 1 之前创建的。尝试更改此:

m_metric = 1;

对此:

setMetric(1);

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

于 2014-04-24T22:53:47.443 回答
1

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

您是否包含 Q_OBJECT 宏?

如果以上都不能解决您的问题,也许文档可以提供帮助?我不是在说 RTFM,只是有时如果您使用的是网站版本的文档,我觉得很难找到东西。

于 2014-04-02T15:52:33.503 回答