Представлен (https://www.kdab.com/gammaray-2-9-0-release/) выпуск отладочной среды GammaRay 2.9.0 (https://www.kdab.com/development-resources/qt-tools/gammaray/), которая позволяет во время работы приложения выполнять интроспекцию, визуализацию и редактирование внутренних структур Qt. GammaRay позволяет на лету просматривать дерево объектов QObject и анализировать обращения к объектам, редактировать свойства, инспектировать операции с QWidget, QtQuick2, QPainterQStateMachines, QGraphicsView, QStyle, QResource и многими другими компонентами Qt. Код проекта распространяется (https://github.com/KDAB/GammaRay) под лицензией GPL.В новой версии появились средства для анализа времени выполнения каждой операций отрисовки, инициированной при использовании Qt Quick и Qt 3D. Добавлена новая вкладка для интроспекции текстур, применяемых при рендеринге через OpenGL.
Добавлен интерфейс инспектирования биндингов QML и связанных с ними зависимостей. Также добавлена новая система трассировки стека при создании объектов QObject. Для Qt 3D расширены возможности по инспектированию изменения геометрии и добавлено несколько новых диагностических режимов выполнения шейдеров. Для QWidget представлен режим визуализации переключения фокуса при работе с интерфейсом.
URL: https://www.kdab.com/gammaray-2-9-0-release/
Новость: http://www.opennet.me/opennews/art.shtml?num=48058
потихоньку догоняют Gtk+ с его GTK_DEBUG=interactive
Кто кого догоняет? :)
Как можно сравнивать прекрасный и современный QT с ужасным и отсталым GTK?
Да-да, Qt (а не QT) прекрасен, но интроспекция уже -дцать лет была в GTK, а Qt только сейчас догнал.
> 2.9.0
> только сейчас догналНе сказать что вот прямо только сейчас.
GammaRay не вчера появилась, а вот GTK так и не стал по настоящему кросплатформенным.
> так и не стал по настоящему кросплатформеннымДля меня это не особо важно. GTK - это чисто наше, линуксовое, незачем делиться софтом с вендузятниками. Плюс я не верю в кроссплатформенный тулкит, стандарты UI-то в шинде и макоси все равно разные. Кроссплатформенный тулкит - идея того же уровня, что и клепание одного и того же "адаптивного" интерфейса для десктопа и мобилы. (про HTML5 не упоминай, клепают-то там не "адаптивный интерфейс", а адаптивный контент.)
увидев первые минусы, я решил самую малость развить свою мысль.Swing - это кроссплатформенный тулкит на Java. И знаете что? Если поищете по IDEA Community в гитхабе по ключевому слову "ismac"[1], то обнаружите, что Swing не справляется со своей кроссплатформенностью.
Кроссплатформенность - это не просто отрисовка кнопки стандартными средствами GTK/WinAPI/макоси. Это также и следование стандартам target-оси. Эта мысль очень важна, так что я повторю ее снова:
«не просто отрисовать нативную кнопку, но и следовать Стандарту».
К примеру, в макоси, насколько я знаю, в меню File нельзя совать пункт меню Exit. В макоси нет никакого File → Exit, запрещено стандартами. И никакой so-called "кроссплатформенный" тулкит с такими требованиями не справится. Разрабатывая плагин для IDEA, я заметил, что кнопка помощи в диалоговых окнах отображается двумя разными способами: для макоси это круглая кнопка (?) снизу слева окна, а для НЕ-макоси это полноценная кнопка [Help] снизу справа наряду с [OK] [Cancel]. Не знаю, стандарт макоси это или нет, но условие способа отображения кнопки назначено именно через isMac().
А всех несогласных я бы попросил привести мне любое приложение, которое, используя один и тот же тулкит, правильно отображалось бы и в макоси (согласно Стандартам макоси), и в винде (согласно Стандартам винды). Заметьте: я не прошу поддержку линукса. Достаточно "кроссплатформенного" тулкита только для макоси и винды.
[1] https://github.com/JetBrains/intellij-community/search?utf8=...
Поменял цель и жестоко её победил. Молодец.
По твоему получается, что имея кросплатформенный тулкит, но добавив лишнюю кнопку в меню программы из-за незнания стандартов можно сделать вывод, что тулкит не кросплатформенный. Чини логику.
Такие вещи делаются во время компиляции, при помощи #ifndef Q_OS_MACOS и прочими препроцессорными директивами, а всё что ваше сиятельство написало - голимая демагогия.
Как в Qt, ни разу не используя Q_OS_MACOS/isMac()/и т. д. реализовать все то, что я описал выше? (пункт меню и кнопка Help)Ибо кроссплатформенность предполагает, что Q_OS_MACOS/isMac() - это та функция, которой будет пользоваться исключительно тулкит, а не конечное приложение.
>Как в Qt, ни разу не используя Q_OS_MACOS/isMac()/и т. д.Это наглая лож. Внутри Qt это везде используется. А снаружи - это задача программиста. Набор кнопок и меню делает программист, а не Qt.
Q_OS_MACOS - это один из инструментов реализации кроссплатформенности в Qt в конечном приложении для подгонки под стандарт ОС. И активно для этого используется. Не надо бреда.
Во-первых, Qt далеко уже не "библиотека для графического интерфейса", и во многом всевозможные кроссплатформенные обвязки на системозависмые компоненты делают Qt привлекательным инструментом для использования.Во-вторых, используя Qt никто не запрещает строить интерфейсы на чистом Qml, что гарантирует одинаковый вид на всех платформах. Другой вопрос, хорошо ли когда приложения сами рисуют свой интрефейс вместо использования общих системных компонент. Но Google Сhrome и растущее количество Electron-based приложений (плюс лично у меня под оффтопиком - Steam, Nvidia Geforce Experience, Avast Antivirus и AIMP) своим примером показывают, что это стандартная практика в наше время.