Синхронизация состояний Qt / PyQt с использованием QUndoCommand - PullRequest
0 голосов
/ 21 сентября 2018

Поэтому я пытаюсь синхронизировать большой многостраничный графический интерфейс PyQt и использовать возможность отмены Qt.У меня пока нет способа сериализовать только изменения общего состояния, поэтому я определяю глобальное состояние, когда пользователь взаимодействует с чем-либо, и сохраняю новые и старые состояния в QUndoCommand.Насколько я понимаю, команда должна на самом деле делать все, что вы хотите от взаимодействия с пользовательским интерфейсом, чтобы, когда оно отменено или переделано, вы получили то же поведение.

Что япытаясь выяснить, когда пользователь (например) устанавливает флажок на странице, которая влияет на глобальное состояние графического интерфейса и состояние локальной страницы, как мне распространять это изменение по всему графическому интерфейсу?Должен ли обработчик QUndoCommand сообщать родительскому графическому интерфейсу о новом глобальном состоянии, а родительский графический интерфейс сообщать всем страницам (включая текущую страницу) новое состояние?Должен ли я игнорировать страницу, которая генерирует изменения, и локально обрабатывать обновления пользовательского интерфейса страницы?Если я обновлю пользовательский интерфейс текущей страницы на основе обновленного глобального состояния, должен ли я просто игнорировать флажок, вызвавший обновление?Должен ли я проверить, является ли каждый элемент пользовательского интерфейса «правильным», прежде чем пытаться обновить их, чтобы они соответствовали глобальному состоянию?Должен ли я ставить временные метки на все, чтобы графический интерфейс не пытался установить ползунок на значение, которое было на миллисекунде назад (если пользователь, например, активно его скользит)?

Я думаю, что в некоторыхпути это простая проблема синхронизации.Если я попытаюсь связать 3 флажка с одной и той же переменной True / False, у меня возникнет та же самая основная проблема, только с той сложностью, что QUndoCommand хранит изменения.

Любая полезная философия информатики, чтобы спасти меня отпереосмыслить это?

...