我想将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);
}

09-05 22:59