2016-11-16 8 views
1

Я хотел бы вставить экземпляр Q3DScatter в одну из моих форм. Я могу построить график и отобразить его:добавление Q3DScatter в существующую форму QDialog

Q3DScatter *graph = new Q3DScatter(); 
QWidget *container = QWidget::createWindowContainer(graph); 

...do some graph stuff... 

container.show() 

Это успешно создает график и показывает его в своем собственном окне/контейнера. Теперь я хотел бы разместить его в другой форме, которая была разработана в qt-creator. Я поместил пустой widget в форму (QDialog) в качестве заполнителя, но не смог переместить Q3DScatter в виджет.

Я вижу в документации Q3DScatter::Q3DScatter(const QSurfaceFormat *format = Q_NULLPTR, QWindow *parent = Q_NULLPTR), но я не имею QWindow родителя прикрепить его, как форма, я хотел бы добавить, что это является QDialog ...

Я очень новой для widgets в целом , поэтому, пожалуйста, исправьте меня, если это неправильный подход.

ответ

1

Добавить контейнер в качестве дочернего элемента диалогового окна. Поместите макет, если вам нужно изменить размер при изменении размера диалогового окна. Пример:

MyDialog::MyDialog(Q3DScatter *scatter, QWidget *parent) : QDialog(parent) 
{ 
    QHBoxLayout * const l = new QHBoxLayout(this); 
    l->setMargin(0); 
    l->addWidget(QWidget::createWindowContainer(scatter, this); 
}