将Q3DScatter添加到现有的QDialog表单中

adding a Q3DScatter to an existing QDialog form

本文关键字:QDialog 表单 Q3DScatter 添加      更新时间:2023-10-16

我想插入一个Q3DScatter实例到我的一个表单。我能够构建图形并使用以下命令显示它:

Q3DScatter *graph = new Q3DScatter();
QWidget *container = QWidget::createWindowContainer(graph);
...do some graph stuff...
container.show()

这成功地创建了图形,并将其显示在自己的窗口/容器中。我现在想把它放在另一个形式已经设计在qt-creator。我在表单(QDialog)上放置了一个空的widget作为占位符,但无法将Q3DScatter移动到小部件中。

我在文档中看到Q3DScatter::Q3DScatter(const QSurfaceFormat *format = Q_NULLPTR, QWindow *parent = Q_NULLPTR),但我没有一个QWindow父附加到它,因为我想添加它的形式是一个QDialog…

我是widgets的新手,所以如果这是错误的方法,请纠正我。

将容器添加为对话框的子元素。如果需要在对话框调整大小时调整大小,请放入布局。例子:

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