vtkRenderWindow在QT中显示

本文探讨了在QT中使用VTK时,QVTKOpenGLWidget与QVTKOpenGLNativeWidget的区别。QVTKOpenGLWidget是一个QVTKOpenGLStereoWidget,而QVTKOpenGLNativeWidget继承自QOpenGLWidget。遇到的问题是QVTKOpenGLNativeWidget无法显示顶点,解决办法是在构造函数内启用关键特性以确保顶点的正常显示。

Study-VTK:QVTKWidget、QVTKOpenGLWidget、QVTKOpenGLNativeWidget、QVTKWidget2 区别_Beyond欣的博客-优快云博客

QVTKOpenGLWidget 是一个QVTKOpenGLStereoWidget

typedef QVTKOpenGLStereoWidget VTK_LEGACY(QVTKOpenGLWidget);

QVTKOpenGLNativeWidget 继承了 QOpenGLWidget

class VTKGUISUPPORTQT_EXPORT QVTKOpenGLNativeWidget : public QOpenGLWidget

QVTKOpenGLNativeWidget不显示顶点vertex

解决方法:

需要在构造函数内初始化一个非常重要的特性,否则无法显示顶点

ShellDIS::ShellDIS(QWidget* parent)//你的自定义类,ui里有一个QVTKOpenGLNativeWidget
	: QMainWindow(parent)
{
	QSurfaceFormat::setDefaultFormat(QVTKOpenGLNativeWidget::defaultFormat());
	ui.setupUi(this);
}

Qt中调用VTK可以按照以下步骤进行: ### 1. 安装VTK库 首先需要从VTK的官方网站下载并安装适合自己系统的VTK库。安装过程中需要注意选择合适的版本,并且记录好安装路径。 ### 2. 配置Qt项目 #### 2.1 包含VTK头文件和库文件 在Qt项目的 `.pro` 文件中添加VTK的头文件和库文件路径。例如: ```plaintext # 添加VTK头文件路径 INCLUDEPATH += "C:/VTK/include/vtk-9.0" # 添加VTK库文件路径 LIBS += -L"C:/VTK/lib" -lvtkCommonCore-9.0 -lvtkRenderingCore-9.0 # 根据实际需要添加更多库 ``` 这里的路径需要根据自己的VTK安装路径进行修改,同时 `-lvtkCommonCore-9.0 -lvtkRenderingCore-9.0` 等库名也需要根据实际使用的VTK库进行调整。 #### 2.2 设置运行时库路径 为了确保程序在运行时能够找到VTK库文件,可以将VTK库的路径添加到环境变量中,或者在 `.pro` 文件中指定。如参考内容中提到的: ```plaintext DESTDIR = C:/Users/admin/Desktop/QT_project/VTK_/debug/bin ``` 将库的路径添加到 `DESTDIR` 中,确保程序运行时能够找到所需的库文件。 ### 3. 在Qt代码中使用VTK #### 3.1 包含VTK头文件 在Qt的 `.cpp` 文件中包含所需的VTK头文件,例如: ```cpp #include <vtkSmartPointer.h> #include <vtkSphereSource.h> #include <vtkPolyDataMapper.h> #include <vtkActor.h> #include <vtkRenderWindow.h> #include <vtkRenderer.h> ``` #### 3.2 创建VTK对象并进行操作 以下是一个简单的示例代码,用于创建一个球体并显示Qt窗口中: ```cpp #include <QApplication> #include <QVTKOpenGLNativeWidget.h> #include <vtkSmartPointer.h> #include <vtkSphereSource.h> #include <vtkPolyDataMapper.h> #include <vtkActor.h> #include <vtkRenderWindow.h> #include <vtkRenderer.h> int main(int argc, char *argv[]) { QApplication a(argc, argv); // 创建VTK对象 vtkSmartPointer<vtkSphereSource> sphereSource = vtkSmartPointer<vtkSphereSource>::New(); sphereSource->Update(); vtkSmartPointer<vtkPolyDataMapper> mapper = vtkSmartPointer<vtkPolyDataMapper>::New(); mapper->SetInputConnection(sphereSource->GetOutputPort()); vtkSmartPointer<vtkActor> actor = vtkSmartPointer<vtkActor>::New(); actor->SetMapper(mapper); vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New(); renderer->AddActor(actor); vtkSmartPointer<vtkRenderWindow> renderWindow = vtkSmartPointer<vtkRenderWindow>::New(); renderWindow->AddRenderer(renderer); // 创建Qt VTK窗口 QVTKOpenGLNativeWidget vtkWidget; vtkWidget.SetRenderWindow(renderWindow); vtkWidget.show(); return a.exec(); } ``` ### 4. 编译和运行 完成上述步骤后,编译并运行Qt项目。如果一切配置正确,应该能够在Qt窗口中看到VTK创建的图形。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

C++程序员Carea

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值