2016-01-29 2 views
1

Так что я чувствовал все теплое и нечеткие внутри после reading что Qt3D вновь появился в v2.0 и фактически становится частью Qt5 скоро и что части он уже доступен для тестирования как технический просмотр.Показать Qt3D материал внутри QWidget в Qt5

Я отправился с простым планом, я бы Qt3D работаю внутри виджета в моем существующей основе применения C++/виджетов. Однако единственный пример, который я мог найти, что показывает, как использовать Qt3D из C++ называется basicshapes-cpp, и это показывает некоторые формы, предоставляемые в отдельном OpenGL/Qt3D подготовлен window (класс, расширяющий QWindow), в отличие от QWidget.

Теперь я прочитал о роли QWindow VS. QWidget и как все это висит вместе аккуратно, но я до сих пор пытаюсь понять, как я могу порт Qt3D кода из программы basicshapes-cpp для запуска внутри QWidget. Каковы основные шаги, которые необходимо соблюдать?

+2

На данный момент, просто используйте 'QWidget :: createWindowContainer'. Правильная интеграция с QWidget должна появиться в 5.8/5.9. – peppe

+0

Сладкий! Поместите его в asnwer, и я соглашусь с ним :) –

+0

Итак, просто для clairfy, даже если есть новый QOpenGLWidget, который не может работать с Qt3D? –

ответ

1

Это извлечение this post показывает, как это работает:

#include <QObject> 
#include <QWidget> 
#include <Qt3DExtras/Qt3DWindow> 

class Qt3DWidget 
     : public QWidget 
{ 
    Q_OBJECT 
    QWidget *container; 

public: 
    explicit Qt3DWidget(QWidget *parent = nullptr); 

}; 

Qt3DWidget::Qt3DWidget(QWidget *parent) 
    : QWidget(parent) 
{ 
    auto view = new Qt3DExtras::Qt3DWindow(); 

    // put Qt3DWindow into a container in order to make it possible 
    // to handle the view inside a widget 
    container = createWindowContainer(view,this); 

    // ... further stuff goes here 
} 
Смежные вопросы