Size: a a a

2021 January 09

AS

Anatoly Shirokov in Qt
например, я никогда сеттер не пишу руками. вот эбоут ю?
источник

МВ

Макс Воробьев... in Qt
тогда смысл вообще писать сеттеры? заменить getter/setter на кастом member, который умеет оповещать о изменении значения в нем
источник

МВ

Макс Воробьев... in Qt
я вообще не люблю писать setter/getter ради setter/getter
источник

AS

Anatoly Shirokov in Qt
Макс Воробьев
тогда смысл вообще писать сеттеры? заменить getter/setter на кастом member, который умеет оповещать о изменении значения в нем
Смотри в чем разница. В мире свойств объекта атомарность установки состояния размазана. Например, для настройки карандаша мне надо установить несколько свойств. Поэтому сеттер не должен  содержать сложного поведения дополнительно к тому, что он делает установку нового значения.
источник

AS

Anatoly Shirokov in Qt
Макс Воробьев
я вообще не люблю писать setter/getter ради setter/getter
такова данность объектной модели, с которой мы работаем.
источник

МВ

Макс Воробьев... in Qt
по моему изначально ООП было не про это)
источник

AS

Anatoly Shirokov in Qt
Макс Воробьев
по моему изначально ООП было не про это)
мы говорим сейчас о "свойствах" и их имитации в С++.
источник

МВ

Макс Воробьев... in Qt
Anatoly Shirokov
Смотри в чем разница. В мире свойств объекта атомарность установки состояния размазана. Например, для настройки карандаша мне надо установить несколько свойств. Поэтому сеттер не должен  содержать сложного поведения дополнительно к тому, что он делает установку нового значения.
если нужно устанавливать несколько свойств, то сделать "setter" который принимает parameter object
источник

AS

Anatoly Shirokov in Qt
Макс Воробьев
если нужно устанавливать несколько свойств, то сделать "setter" который принимает parameter object
зачастую это размазано, а не как ты описываешь
источник

AS

Anatoly Shirokov in Qt
короче, Макс, ты меня уже вывел, все, диспут закончен :)
источник

МВ

Макс Воробьев... in Qt
а так получается "установили свойство - отправили эмит - обработали - установили свойство - отправили эмит - обработали" даже если для обработки данных недостаточно
источник

МВ

Макс Воробьев... in Qt
на примере Chart в qml, когда биндишь min и max и в результате есть момент, когда min > max
источник

AS

Anatoly Shirokov in Qt
Макс Воробьев
а так получается "установили свойство - отправили эмит - обработали - установили свойство - отправили эмит - обработали" даже если для обработки данных недостаточно
в отличии от хардкода в сеттере поведение обработчиков я могу менять
источник

МВ

Макс Воробьев... in Qt
из-за того, что не все свойства проставлены
источник

AS

Anatoly Shirokov in Qt
Макс Воробьев
из-за того, что не все свойства проставлены
я тебе об этом и говорю
источник

AS

Anatoly Shirokov in Qt
поэтому "полезную" деятельность отодвигают из сеттеров и отдаляют ее
источник

AS

Anatoly Shirokov in Qt
@top1pogromist вообщем, все должно работать как часы:
    Component.onCompleted: {
       model.refresh()
   }

   /////////////////////////////////////////////////////////////////////////
   // child objects
   CompositeProductManager {
       id: entityManager
       dataSource: globalDataSource
   }

   GenericEntityModel {
       id: genericEntityModel
       entityManager: entityManager
   }

   EntitySortFilterProxyModel {
       id: model
       filterText: searchField.text
       sourceModel: genericEntityModel
   }
источник

ПК

Побитый Кирпич... in Qt
Anatoly Shirokov
@top1pogromist вообщем, все должно работать как часы:
    Component.onCompleted: {
       model.refresh()
   }

   /////////////////////////////////////////////////////////////////////////
   // child objects
   CompositeProductManager {
       id: entityManager
       dataSource: globalDataSource
   }

   GenericEntityModel {
       id: genericEntityModel
       entityManager: entityManager
   }

   EntitySortFilterProxyModel {
       id: model
       filterText: searchField.text
       sourceModel: genericEntityModel
   }
Мне кажется у меня ошибка в прокидывании C++ классов и интерфейсов в QML. Пока буду думать в эту сторону, мб инстанцировать в С++ объекты и через setContextProperty прокидывать в qml...
источник

AS

Anatoly Shirokov in Qt
Побитый Кирпич
Мне кажется у меня ошибка в прокидывании C++ классов и интерфейсов в QML. Пока буду думать в эту сторону, мб инстанцировать в С++ объекты и через setContextProperty прокидывать в qml...
ну, через контекст прокидывать дело нехитрое, все должно работать и с декларативным созданием в QML
источник

AS

Anatoly Shirokov in Qt
@top1pogromist по-моему, у меня даже пример сохранился, который мы с тобой когда-то здесь разбирали https://gist.github.com/anatoly-spb/d76e6ff025a4240a17f693df90e71054
источник