LINUX.ORG.RU

Сообщения dleather

 

QT C++ и QML общие настройки

Форум — Development

Осваиваю тут QT 5 и сразу проблема, как хранить настройки приложения. Приложение гибридное логика на C++, интерфейс на QML. Для самой QT есть QSettings, для QML есть Settings. Все это здорово конечно, но хотелось бы все настройки иметь в одном месте, а не в двух. Так же хотелось бы чтобы если изменяют некий чекбокс в qml к примеру, то он менял соответствующую настройку и я мог ее прочитать на C++ и наоборот.

Этого можно добиться, простым путем: обернуть QSettings в свой класс и выставить его в QML через rootContext()->setContextProperty или вообще не оборачивать, а выставить как есть - но это уже детали.

Но при таком подходе, QML настройки из него конечно прочитает, но не узнает, если вдруг они изменились, можно подписать на сигнал изменения конечно, но это опять куча ручной работы. Также на каждое изменение настройки в QML придется писать обработчики из серии:

onXChanged: { settings.setValue("main.x", main.x); }

QML-й Settings умеет автоматически сохранять подцепленные к нему свойства, т.е. как в примере из доки:

( читать дальше... )

В QML прописали что хотим сохранять и все само сохраняется при изменениях.

В связи с этим посмотрел исходники QML-го Settings, не вся реализация там есть, но основная идея вроде понятна.

Набросал тестовый пример: settings.h

( читать дальше... )

В сторону QML работает, при любом изменении св-ва test тут же меняется и связанное свойство в QML. А вот наоборот нифига. Причем у QML-го Settings это работает, вопрос собственно простой: Что я делаю не так ?

И в догонку, а вообще как кто решает проблему хранения и отображения настроек в интерфейсе ?

 , ,

dleather
()

RSS подписка на новые темы