2016-06-25 9 views
0

Я хочу создать приложение, которое принесет пользу как из преимуществ OpenGL, так и из QML. Я хочу использовать QOpenGLWidget и разместить QML Item над ним. Item будет частично прозрачным. Хотя это возможно, используя QQuickView, но я просто понял, что он покрывает все прозрачные детали черным цветом. Попытка добиться того, что мне нужно (пример проекта), можно найти на моем GitHub here.Отображение QML-элемента над QWidget

Можно ли вынести QML Item со всеми детьми на существующий QWidget таким образом, что она видна под Item, где бы Item не полностью непрозрачным?

Я думаю, что в худшем случае я мог бы создавать растровые изображения из объектов QWidget и Item, как-то их сочетать и отображать, но я ищу более простой способ. Если нет более простого способа, я бы просто не мог отображать эти два одновременно.

Причина, по которой я не хочу использовать функции OpenGL в QML напрямую, - this. Может быть, я должен просто использовать работу, указанную в ссылке.

+1

Вы пробовали QQuickWidget? Предполагается, что это намного лучшая альтернатива проблемным оконным контейнерам. – jpnurmi

+0

@ J-PNurmi Спасибо. Раньше я не пробовал. Я проверю это и дам вам знать –

+1

Вы можете сделать собственный OpenGL внутри представления qtquick без использования каких-либо виджетов –

ответ

0

Думаю, вам не нужны виджеты. Вы можете выполнить индивидуальный рендеринг в QtQuick, используя класс QQuickFramebufferObject. Раньше я делал это раньше, хотя у меня больше нет кода. Эта статья, как представляется, объясняет, что делать https://blog.qt.io/blog/2015/05/11/integrating-custom-opengl-rendering-with-qt-quick-via-qquickframebufferobject/