Я создаю CAD-подобное приложение, когда выбор объекта в окне просмотра изменяется, и выдается сигнал, содержащий QHash новых объектов. Этот сигнал перехватывается его подокном документа, которое выводит из них новый пользовательский интерфейс свойств / настроек, уничтожает отображение существующих свойств на главной панели свойств окна и заменяет их новыми свойствами / настройками.
Используя операторы print, я знаю, что это работает - все соединения сигнал / слот срабатывают правильно. Однако виджеты свойств очень непоследовательно перерисовываются, если я выполняю операцию непосредственно в главном окне (нажмите кнопку, наведите курсор мыши на виджет), обновляются виджеты, о которых идет речь. Но когда я просто выбираю объекты в области просмотра, панель свойств «пропускает» обновление, поэтому в конечном итоге отображаются свойства предыдущего объекта - я знаю, что это не проблема с моей стороны, потому что, если я перемещаю окно или взаимодействую с виджеты (чтобы вызвать перерисовку), виджеты волшебным образом становятся правильными.
Эти функции не вызываются из отдельных потоков. Если я вручную вызываю update () в моем коде, ничего не меняется. Если я вызываю repaint () напрямую (я знаю, что не должен), это работает немного лучше, но немного нестабильно - иногда виджеты вообще не отрисовываются.
У кого-нибудь был подобный опыт?