Есть ли виджет Qt для просмотра иерархии виджетов в приложении (аналог Spy++)?

У нас есть приложение со сложной иерархией виджетов, и я хочу иметь возможность просматривать эту иерархию, просматривать и редактировать свойства (например, размер) аналогично Spy++. Его не нужно запускать во внешнем приложении, если есть виджет, который может отображать эту информацию. Итак, вопрос в том, существует ли такой мифический зверь?


person the_mandrill    schedule 28.10.2010    source источник


Ответы (3)


вы можете использовать Gammaray для шпионских виджетов, слотов сигналов, таймеров, ресурсов и т. д. Gammaray — очень мощный инструмент для шпионское приложение Qt

person khani_mahdi    schedule 12.08.2014

Обычный подход состоит в том, чтобы создать такого монстра своими силами, используя API-интерфейсы самоанализа и проходя иерархию родитель-потомок QWidget. Базовый построить довольно легко; если вы хотите создать полноценный редактор свойств, это значительно больше работы. Вероятно, есть код, который вы можете повторно использовать, чтобы сократить объем работы — возможно, даже код инспектора свойств из Designer, хотя это может быть излишним. Я никогда не заходил так далеко, как полный графический интерфейс, из-за нехватки времени - я просто выгрузил иерархию и некоторые фиксированные свойства в стандартный вывод в виде текста или XML.

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

person James Turner    schedule 28.10.2010
comment
Я подумал, что, наверное, так и было. Очень жаль, потому что это был бы довольно полезный компонент, и, вероятно, не так уж сложно сделать, учитывая мощь концепции QAbstractItemModel. - person the_mandrill; 29.10.2010

Не браузер, но полезен при отладке...

void QObject::dumpObjectTree() const

Выводит дерево дочерних элементов в вывод отладки.

person Anonymouse    schedule 31.10.2019