2012-02-11 4 views
8

У меня есть библиотека, которая доказывает мне QGLWidget, и интерфейс позволяет мне изменять размер/размер и управлять некоторой анимацией GL; но никакая команда GL не отображается снаружи, все, что я делаю, инициализирует GLWidget, а затем передает контекст в библиотеку, а затем переводит буфер обмена, чтобы показать анимацию.Хостинг QOpenGL-виджет внутри QML

Я хочу интегрировать эту библиотеку QGLWidget в QML, возможно ли hove QGLWidget внутри QML? если да, то как?

ответ

3

Это абсолютно возможно! Вы можете write a QML plugin, который будет define a new QML element, чтобы инкапсулировать библиотеку.

Затем вы получите import этот плагин из документа QML, и вы будете хорошо использовать новый элемент и использовать функции, предлагаемые библиотекой.

Совет: если приложение, загружающее ваш документ QML, было настроено на QGLWidget, тогда вам не нужно будет создавать новый QGLWidget внутри вашего плагина. I did this mistake once.

This blog post показывает, как создать простой/новый элемент QML с нуля и как его использовать в документе QML.

+0

Привет, Карл, спасибо за подсказку, позвольте мне попробовать сегодня ... :) –

+3

Кто бы ни отклонил, объясните, почему. – karlphillip

+0

первые 2 ссылки больше не работают – wotanii

2

QGLWidget происходит от QWidget, тогда как виджеты QML реализованы как QDeclarativeItem, который происходит из QGraphicsObject, и эти два находятся в разных мирах.

Возможный способ сделать OpenGL рисунков в элементе QML это объявить новый QDeclarativeItem, выставить его в систему QML, а затем переопределить метод рисования этого QDeclarativeItem подкласса сделать родную живопись (путем вызова beginNativePainting и endNativePainting из Экземпляр QPainter, предоставленный в методе рисования).

Посмотрите на эти две ссылки: http://doc.qt.nokia.com/4.7-snapshot/qml-extending.html http://developer.qt.nokia.com/forums/viewthread/4109

 Смежные вопросы

  • Нет связанных вопросов^_^