2017-10-17 21 views
0

私はQtとVTKに入ることを試みましたが、これまでには多くの障害がありました。 Googleとstackoverflowは私にかなり多くの助けたが、私は自分でこの問題を解決することはできません。それはQVTKOpenGLWidgetについてです。私はこれを取得する方法がわからないと、この例では、私のために働いていません。VTKの動作しない例 - QVTKOpenGLWidget?

https://lorensen.github.io/VTKExamples/site/Cxx/Qt/RenderWindowUISingleInheritance/

私もCMakeLists.txtに次の行を追加する必要がありました:

SET(VTK_DIR "/path/to/cmake/vtk-8.0" CACHE PATH "VTK directory override" FORCE) 

場合私はそれを実行しようとする私を取得、次のerrormessages:

RenderWindowUISingleInheritance.cxx:21:53:エラー:への呼び出し 'QVTKOpenGLWidget :: SetRenderWindow(vtkNew &')に該当する機能 this-> UI-> QV tkWidget-> SetRenderWindow(renderWindow);

RenderWindowUISingleInheritance.cxx:34:33:エラー:「vtkRenderer :: AddActor(vtkNew &)」 renderer-> AddActor(sphereActor)への呼び出しに該当する機能。

RenderWindowUISingleInheritance.cxx:37:64:エラー:「vtkRenderWindow :: AddRenderer(vtkNew &)」 this-> UI-> qvtkWidget-> GetRenderWindow()への呼び出しに該当する機能 - > AddRenderer(レンダラ)。

私はこのQVTKOpenGLWidgetがどこから来ているのかわかりませんが、Qt5ではQVTKOpenWidgetの代わりにこれを使用しなければならないようですが、動作していないようです。私は一般的にQtやVTKの経験はあまりありません。だから、解決するのは簡単かもしれません。

RenderWindowUISingleInheritance.cxx:

#include "RenderWindowUISingleInheritance.h" 
// This is included here because it is forward declared in 
// RenderWindowUISingleInheritance.h 
#include "ui_RenderWindowUISingleInheritance.h" 

#include <vtkGenericOpenGLRenderWindow.h> 
#include <vtkNew.h> 
#include <vtkPolyDataMapper.h> 
#include <vtkRenderer.h> 
#include <vtkRenderWindow.h> 
#include <vtkSphereSource.h> 

// Constructor 
RenderWindowUISingleInheritance::RenderWindowUISingleInheritance() 
{ 
    this->ui = new Ui_RenderWindowUISingleInheritance; 
    this->ui->setupUi(this); //*1 

    vtkNew<vtkGenericOpenGLRenderWindow> renderWindow; 
    this->ui->qvtkWidget->SetRenderWindow(renderWindow); //*2 


    // Sphere 
    vtkNew<vtkSphereSource> sphereSource; 
    sphereSource->Update(); 
    vtkNew<vtkPolyDataMapper> sphereMapper; 
    sphereMapper->SetInputConnection(sphereSource->GetOutputPort()); 
    vtkNew<vtkActor> sphereActor; 
    sphereActor->SetMapper(sphereMapper); //*3 

    // VTK Renderer 
    vtkNew<vtkRenderer> renderer; 
    renderer->AddActor(sphereActor); //*4 

    // VTK/Qt wedded 
    this->ui->qvtkWidget->GetRenderWindow()->AddRenderer(renderer); //*5 

    // Set up action signals and slots 
    connect(this->ui->actionExit, SIGNAL(triggered()), this, SLOT(slotExit())); //*6 

} 

void RenderWindowUISingleInheritance::slotExit() 
{ 
    qApp->exit(); //*7 
} 

また、(// * Xでのコードの行をマークし)私に次のことを語っている:

  1. クラスのUi_RenderWindowUISingleInheritance」はありません'setupUI'関数を持っています
  2. クラス 'Ui_RenderWindowUISingleInheritance'にフィールド 'qvtkWidget'がありません
  3. パラメータ型の不一致:型 'v tkMapper *「と 『vtkNewは』
  4. パラメータタイプの不一致
  5. 互換性がありません:タイプ 『vtkProp *』と 『vtkNew』の互換性がありません
  6. クラスのUi_RenderWindowUISingleInheritance qvtkWidget 『
  7. クラスを』 'フィールドを持っていません」 Ui_RenderWindowUISingleInheritanceはactionExit」フィールドはありません 『』
  8. は解決できません
  9. を変数 『qApp』

私はVTKとQtに取得したいので、誰かが私を助けることができると思いますし、これはの一つのようです私は彼らと仕事を始める前に最後の課題。この小さな部分だけで手助けができても、小さなステップがあれば、自分で残りの部分を解決するのに役立つかもしれないので、私に知らせてください!

おかげで、事前

+0

私にも同様の問題があります。これらの2つの設定は非常に苦痛です。私は、QVTKWidgetが廃止される過程にあるので、すべての例でQVTKOpenGlWidgetを使用しています。しかし、それらを一緒に働かせる方法に関するほとんどのドキュメントはありません – Hernan

答えて

0

に私は自分の環境には、この例をビルドします。コンパイルするには、ファイルRenderWindowUISingleInheritanceを修正する必要があります。CXXに.get()これらのオブジェクトに SetRenderWindow(renderWindow.Get())、(sphereMapper.Get())SetMapper、AddActor(sphereActor.Get())とAddRenderer(レンダラを置きます。 Get()):

関連する問題