Я разрабатываю приложение 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
Вы класс наследуете QObject (я думаю, это должно быть, как кажется, виджет)?
Вы включили макрос Q_OBJECT?
Может быть доктор может помочь, если ни один из вышеперечисленных не решит проблему Я не говорю RTFM, просто иногда, если вы используете версию документа на веб-сайте, мне сложно найти что-то.
Я подозреваю, что ваша сцена QML создается до того, как вы установите значение метрики равным 1. Попробуйте изменить это:
m_metric = 1;
к этому:
setMetric(1);
так что привязка QML может быть уведомлена об изменении.