gpt4 book ai didi

qt - QMainWindow 中的 VTK 小部件在鼠标移动之前不会呈现

转载 作者:行者123 更新时间:2023-12-01 06:07:19 25 4
gpt4 key购买 nike

我有一个继承自 QVTKWidget 的小部件。

class MyWidget : public QVTKWidget
{
...
}

此小部件从自动生成的标题 ui_MainWindow.h 实例化文件使用 QT Designer 和 QT Interface Compiler。
...
myWidget = new MyWidget(centralWidget);
myWidget->setObjectName(QString::...);
...

在继承自 QMainWindow 的主窗口中, setupUi被调用,因此 myWidget 被初始化。

在 MyWidget 的构造函数中,初始化了 vtkRenderWindow 和 vtRenderer。
MyWidget::MyWidget(QWidget *parent) : QVTKWidget(parent)
{
...

renderWindow = vtkRenderWindow::New();
renderer = vtkRenderer::New();
renderer->SetBackground(72.0 / 255.0, ...

renderWindow->AddRenderer(renderer);
this->SetRenderWindow(renderWindow);

QVTKInteractor * iren = this->GetInteractor();
renderWindow->SetInteractor(iren);

camera = vtkCamera::New();
camera->SetPosition(...
camera->SetFocalPoint(...
camera->SetViewUp(...

renderer->SetActiveCamera(camera);

draw(renderer); // Custom draw function, adds actors etc.

renderer->Render();
renderWindow->Render();
iren->Render();
}

但是,在我单击并移动 (MouseMove) 之前,不会显示任何内容。然后,我的场景出现了。我尝试更改调用顺序以及在计时器中添加额外的 Render 调用,但无济于事。

有人可以指出一个好方法来确保以这种方式实例化的这个小部件在构造函数通过后呈现吗?

注意:我没有自己的鼠标移动实现。鼠标运动似乎具有正确的效果,即场景在第一次渲染时根据我的鼠标移动稍微旋转。

最佳答案

尝试调用:
iRen->ReInitialize()
作为代码中的最后一步。每当我想确保渲染窗口交互器是最新的时,我都会对其调用重新初始化。让我知道它是否有效。

关于qt - QMainWindow 中的 VTK 小部件在鼠标移动之前不会呈现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36959789/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com