В рамках проекта gtkplatform развивается новый механизм для бесшовного отображения Qt-приложений в окружениях на базе GTK+. В отличие от решений, основанных на стилизации элементов оформления или замены движка тем оформления, в gtkplatform предлагается иной подход - к Qt подключается плагин с реализацией платформы отрисовки на базе GTK+. Иными словами оконные операции Qt-приложений транслируются в API GTK+, который используется как первичный тулкит. Код написан на языке С++ и по аналоги с Qt распространяется под лицензиями LGPLv3 и GPLv2+.

Реализованный в gtkplatform подход позволяет задействовать в Qt-приложениях родные диалоги, обработчики ввода и меню GTK+, что сводит к минимуму видимые отличия при интеграции Qt-приложений в пользовательские окружения на базе GTK+. В том числе Qt-приложения могут бесшовно вписываться в окружение GNOME, работающее поверх Wayland.

На текущем этапе развития поддерживается отрисовка через GTK+ оконных компонентов, формируемых при помощи QPainter, QOpenGLContext, QOpenGLWidget и QtWebEngine, возможно использование буфера обмена, используются нативные меню и диалоги GTK+, обрабатываются события ввода от сенсорных экранов, клавиатур и мышей. Из планов отмечается подготовка вспомогательных обработчиков для задействования специфичных возможностей GTK+, таких как вынос панели инструментов в заголовок окна (GtkHeaderBar).

Подключение плагина gtkplatform производится через запуск приложения с установкой переменной окружения "QT_QPA_PLATFORM=gtk" или через указание опции "-platform gtk". Для пользователей Arch Linux плагин уже размещён в репозитории AUR. Из похожих проектов можно отметить плагины gtk-qt-engine, qgtkstyle, QGnomePlatform и Qt5Gtk2, которые заменяют движок тем оформления (QT_QPA_PLATFORMTHEME) на вариант, работающий поверх GTK+.



Источник: http://www.opennet.ru/opennews/art.shtml?num=47262