Подтвердить что ты не робот

Есть ли полезные инструменты для диагностики Qt-макетов и интервалов?

См. также соответствующий вопрос: Как отлаживать проблемы макета Qt

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

Однако я продолжаю думать, что должен быть лучший способ. Посмотрите на такие инструменты, как панель инструментов веб-разработчика Firefox, которая будет делать такие вещи, как отметки границ или показать иерархию элементов управления. Существуют ли какие-либо инструменты или библиотеки, которые будут делать это для Qt-приложений?

ОБНОВЛЕНИЕ 5 мая 2016 г.

Я нашел один из самых простых и наиболее информативных способов диагностики проблем с интервалами - сбросить иерархию виджетов с точки зрения QLayouts. Я создал образец кода, который содержит информацию о подсказках размеров, элементах проставки, отступов и полях содержимого: https://gist.github.com/pjwhams/6ebc040db3ab55615eafd831e184e39c

Еще один инструмент: https://github.com/robertknight/Qt-Inspector

4b9b3361

Ответ 1

У меня был связанный следующий вопрос в другом потоке, к которому Дмитрий придумал отличный метод, который привел к хорошему решению: Наложение наложения поверх окна приложения

EDIT: я также нашел полезную технику, скрытую в документации QLayout::itemAt(), которая показывает, как итерации через QLayoutItems в макете и нарисуйте их прямоугольники

Ответ 2

Не могли бы вы использовать QHoverEvent, чтобы добавить темную рамку или всплывающее окно с идентификатором при каждом наведении на элемент?

Ответ 3

То, что вы ищете, - это в основном инструмент, который анализирует QObject или, скорее, иерархию QWidget и добавляет аннотации. Это именно то, что GammaRay около. Это лицензия GPL и поэтому свободно доступна. Вы можете получить дополнительную информацию на странице GammaRay. Я использовал его несколько раз, и он работает, как ожидалось.

Ответ 4

Поздно, но QObject:: dumpObjectTree() помог мне решить мои проблемы.

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