【发布时间】:2015-01-30 15:24:36
【问题描述】:
我有一个带有 QML 前端的简单 BB10 应用程序。
GUI 由几个按钮和一个标签组成
Page {
Container {
Label {
text: app.alarmCount()
}
Button {
text: qsTr("Resend Notification")
onClicked: {
app.resendNotification();
}
}
Button {
text: qsTr("Stop Service")
onClicked: {
app.stopService();
}
}
Button {
text: qsTr("Kill Service")
onClicked: {
app.killService();
}
}
}
}
还有 C++ 类
class ApplicationUI: public QObject
{
Q_OBJECT
Q_PROPERTY(QString alarmCount READ alarmCount NOTIFY AlarmUpdate)
public:
ApplicationUI();
virtual ~ApplicationUI() { }
Q_INVOKABLE void resendNotification();
Q_INVOKABLE void stopService();
Q_INVOKABLE void killService();
QString alarmCount() const;
void setAlamCount(int newCount);
signals:
void AlarmUpdate();
private:
bb::system::InvokeManager* m_invokeManager;
QString m_alarmCountDisplay;
};
以及课程中希望相关的部分
QString ApplicationUI::alarmCount() const
{
return m_alarmCountDisplay;
}
void ApplicationUI::setAlamCount(int newCount)
{
m_alarmCountDisplay = QString("%1 Alarms").arg(newCount);
emit AlarmUpdate();
}
我的问题是标签从不显示警报计数字符串属性。我在 emit 上设置了一个断点,可以看到它被调用,并且在 alarmCount() getter 上可以看到它返回了正确的值,但我的前端实际上从未显示标签的值。
【问题讨论】:
-
正如我在 Victor 的回答中提到的那样,您确实应该收到一条错误消息。
-
我绝对没有收到错误。也就是说,我也有 Momentics IDE 不断告诉我 Q_OBJECT 是一个语法错误,确保项目设置了正确的库再多也无法说服它。
-
要总结所有错误报告,我没有收到任何错误的原因是在 Momentics 中获取 QML 错误,您必须将应用程序作为 QML Debug 运行。常规的 Debug 目标隐藏了所有内容,只在 C++ 代码上工作。
标签: c++ qt qml blackberry-10