2012-08-24 57 views
2

我有一個小問題,我認爲這很容易,所以得到一個解決方案,但我已經到了嘗試一切,仍然無法正常工作。我敢肯定這件事很簡單,所以我在尋求幫助,因爲我無法自己想出來。Vtk呈現另一個窗口除了qvtkwidget

我在centralwidget上有一個qvtkwidget,它沒有問題。

問題是,我每次運行程序時都會彈出除界面之外的另一個框。

這裏是我的代碼的重要部分這個問題。

// Create renderer 
    ren= vtkRenderer::New(); 
    ren->AddActor(outlineActor); 
    ren->SetBackground(0.1,0.1,0.3); 

// Drawing some X,Y,Z axes 
    axes= vtkCubeAxesActor2D::New(); 
    //more stuff 
    ren->AddViewProp(axes); 
    ren->ResetCamera(); 

// Create a window for the renderer 
    renWin= vtkRenderWindow::New(); 
    renWin->AddRenderer(ren); 

// Set an user interface interactor for the render window 
    iren= vtkRenderWindowInteractor::New(); 
    iren->SetRenderWindow(renWin); 

    style = vtkInteractorStyleTrackballCamera::New(); 
    iren->SetInteractorStyle(style); 

// Create a inicial camera view 
vtkCamera *inicam= ren->GetActiveCamera(); 
    inicam->Zoom(1); 
    inicam->SetViewUp(0, 0, 0); 
    inicam->Azimuth(45); 
    ren->ResetCameraClippingRange(); 

// Start the initialization and rendering 
    renWin->Render(); 

// Assign the rendering window to the qvtkwidget 
    ui->qvtkWidget->SetRenderWindow(renWin); 

如果有人對此有任何想法,我將不勝感激。

+0

我曾經有這個(幾年前)以及與Qt,在Windows上的VTK。我不記得確切的修復,但它可能與創建vtk對象的順序有關。如果你註釋掉renWin-> Render();這會發生嗎? – drescherjm

+0

我剛查過,我確實有renWin-> Render();在我的代碼中的qvtkWidget-> SetRenderWindow之後。 – drescherjm

+0

@drescherjm \t 嗨,我把它放在後面,然後它只會在界面外延伸 – SamuelNLP

回答

0

在看到我使用它的例子後。

ui->qvtkWidget->GetRenderWindow()->AddRenderer(ren); 
1

QVTKWidget已經有一個交互器。因此,使用那一個來代替:

auto interactorStyle = vtkSmartPointer<TestInteractorStyle>::New(); 

    QVTKInteractor* interactor = widget->GetInteractor(); 

    interactor->SetInteractorStyle(interactorStyle);