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

См. Также связанный вопрос: Как вы решаете проблемы с разметкой Qt

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

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

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

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

Другой инструмент: https://github.com/robertknight/Qt-Inspector

Ответы [ 4 ]

3 голосов
/ 06 мая 2011

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

РЕДАКТИРОВАТЬ: я также нашел полезную технику, скрытую в документации QLayout::itemAt(), которая показывает, как перебирать QLayoutItems в макете и рисовать их прямоугольники

3 голосов
/ 06 января 2014

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

3 голосов
/ 07 апреля 2011

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

0 голосов
/ 01 мая 2015

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...