Q_PROPERTY НЕ РАБОТАЕТ ПРАВИЛЬНО

Я разрабатываю приложение 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
}
}

Но это не похоже на работу, как ожидалось.
Мы ценим любые предложения. Thanx

-2

Решение

Вы класс наследуете QObject (я думаю, это должно быть, как кажется, виджет)?

Вы включили макрос Q_OBJECT?

Может быть доктор может помочь, если ни один из вышеперечисленных не решит проблему Я не говорю RTFM, просто иногда, если вы используете версию документа на веб-сайте, мне сложно найти что-то.

1

Другие решения

Я подозреваю, что ваша сцена QML создается до того, как вы установите значение метрики равным 1. Попробуйте изменить это:

m_metric = 1;

к этому:

setMetric(1);

так что привязка QML может быть уведомлена об изменении.

1

По вопросам рекламы [email protected]