Составители:
Рубрика:
127
int main(int argc, char *argv[])
{
QSystemInfo si;// библиотека Qt Mobility
}
1. Добавить заголовки используемых модулей Qt Mobility (в примере выше — QSystemInfo);
2. Использовать макрос QTM_USE_NAMESPACE;
3. Добавить в проектный файл строчки:
CONFIG += mobility
MOBILITY += systeminfo
10.2.2. Хранение данных (Publish and Subscribe)
Интерфейс Publish and Subsrcibe предназначен специально для того, чтобы дать приложениям
удобный способ хранения настроек приложения. Он реализован в виде специального хранилища,
который позволяет хранить и считывать элементы данных, а также подписываться на их изменения.
Пространство значений (англ. Value Space) объединяет различные источники иерархические
даных в единую непротиворечивую модель. Концептуально, пространство значений является
иерархическим деревом, в котором каждый узел или лист может, при необходимости, содержать
значение типа QVariant. Сериализованная версия простого примера пространства значений может
выглядеть следующим образом:
/Device/Buttons = 3
/Device/Buttons/1/Name = Menu
/Device/Buttons/1/Usable = true
/Device/Buttons/2/Name = Select
/Device/Buttons/2/Usable = false
/Device/Buttons/3/Name = Back
/Device/Buttons/3/Usable = true
Доступ к существующим значениям в пространстве значений можно получить через класс
QValueSpaceSubscriber. Этот класс предоставляет возможности чтения значений и получения
уведомлений об изменениях заданного пути и навигации по пространству. Новые значения
добавляются по средствам класса QValueSpacePublisher.
Уведомления об изменениях моделируется интересным образом. Например, при изменении
/Device/Buttons/1/Name — изменённым пометится также /Device/Buttons/1 и т. д. вверх по дереву.
Это позволяет, например, подписчикам на /Device/Buttons/1 получать уведомления, когда изменяется
любое свойство кнопки.
Пример использования класса QValueSpacePublisher:
// Добавление значений
QValueSpacePublisher publisher([const QUuid & uuid,] “/My”);
publisher.setValue(“Buttons”, “1”);
publisher.setValue(“Buttons/1/Name”, tr(“Button 1”));
publisher.setValue(“Buttons/1/Enabled”, false);
publisher.sync() ;
// Удаление добавленных значений
publisher.resetValue (“Buttons”);
publisher.sync();
// QValueSpaceSubscriber("/My/Buttons").value() == QVariant();
// QValueSpaceSubscriber("/My/Buttons/1").value() == QVariant();
Страницы
- « первая
- ‹ предыдущая
- …
- 125
- 126
- 127
- 128
- 129
- …
- следующая ›
- последняя »
