VTK隐藏vtkOutputWindow窗口的正确方法

VTK隐藏vtkOutputWindow窗口

要求隐藏vtkOutputWindow窗口,但是不能把Warning警告和Error错误的信息都给屏蔽了


网上常见的错误方法:

现在百度搜索出来的方法几乎都是在这样做:在main文件中使用vtkOutputWindow::SetGlobalWarningDisplay(0) 屏蔽vtkOutputWindow窗口:

#include <vtkOutputWindow.h>

int main()
{
	vtkOutputWindow::SetGlobalWarningDisplay(0);
}

这样做确实能够让vtkOutputWindow窗口不弹出来,但是也会把运行时发生的Warning和Error这些警告都给屏蔽掉,不是指看不到了,而是本来会发生Error的地方,也能顺利通过了,意思是连Error都不会抛出了。所以这种方法会造成很多BUG没法发现,是很严重的问题。

我们实际要的是隐藏窗口,但是出现Error的话,我们也需要程序抛出Error。


正确方法:

其实vtk本身就提供了隐藏vtkOutputWindow的实现案例,官方示例

方法是将Error和Warning的信息输出到日志文件中,取代vtkOutputWindow。

#include <vtkFileOutputWindow.h>
#include <vtkOutputWindow.h>

int main()
{
	vtkNew<vtkFileOutputWindow> fileOutputWindow;
	fileOutputWindow->SetFileName("output.txt");
	vtkOutputWindow::SetInstance(fileOutputWindow);
}

这方法下Error也能正常抛出,也能隐藏vtkOutputWindow。

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
VTK(Visualization Toolkit)是一个用于3D数据可视化和图形处理的开源软件库。如果你想将VTK封装为窗口,可以使用VTK的Qt渲染部分。 以下是VTK封装为窗口的一些基本步骤: 1. 创建一个Qt应用程序并添加VTK依赖项。 2. 在应用程序窗口中添加一个QVTKWidget部件。 3. 创建一个vtkRenderWindow对象,将其设置为QVTKWidget部件的渲染窗口。 4. 创建一个vtkRenderer对象,并将其添加到vtkRenderWindow中。 5. 可以使用vtkActor和vtkMapper等对象创建一个3D场景。 6. 将创建的vtkActor和vtkMapper对象添加到vtkRenderer对象中。 7. 调用vtkRenderWindow的Render方法来呈现3D场景。 以下是一个简单的示例代码,演示如何将VTK封装为窗口: ```python import vtk from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget, QGridLayout from PyQt5.QtWidgets import QFrame from vtk.qt.QVTKRenderWindowInteractor import QVTKRenderWindowInteractor class MainWindow(QMainWindow): def __init__(self, parent=None): QMainWindow.__init__(self, parent) self.frame = QFrame() self.vl = QGridLayout() self.vtkWidget = QVTKRenderWindowInteractor(self.frame) self.vl.addWidget(self.vtkWidget) self.ren = vtk.vtkRenderer() self.vtkWidget.GetRenderWindow().AddRenderer(self.ren) self.iren = self.vtkWidget.GetRenderWindow().GetInteractor() # Create source source = vtk.vtkConeSource() source.SetHeight(3.0) source.SetRadius(1.0) source.SetResolution(10) # Create mapper mapper = vtk.vtkPolyDataMapper() mapper.SetInputConnection(source.GetOutputPort()) # Create actor actor = vtk.vtkActor() actor.SetMapper(mapper) # Add actor to the scene self.ren.AddActor(actor) self.ren.ResetCamera() self.vtkWidget.Render() self.setCentralWidget(self.frame) if __name__ == "__main__": app = QApplication([]) window = MainWindow() window.show() app.exec_() ``` 这段代码创建了一个带有一个VTK场景的Qt窗口,其中场景由一个圆锥体组成。你可以根据自己的需要修改场景内容和渲染方式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值