2016-11-24 19 views
0

私は、コンストラクタでいくつかのものをレンダリングするMainWindowというGUIを持っています。 このコンストラクタの上に、OnRightButtonDown()関数を実装するインタラクタのカスタムクラスを宣言しました。 この関数では、私のMainWindowクラスから関数を呼び出す必要があります。Qt/VTK:適切なデフォルトのコンストラクタがありません(カスタムインタラクタ)

私は、コードにエラーを実行しています:

"No appropriate default constructor available"

は、この行を参照する発生します。

vtkStandardNewMacro(customMouseInteractorStyle); 

どのように私は、引数でコンストラクタを有効にするには、自分のコードを変更できますか?

class customMouseInteractorStyle : public vtkInteractorStyleTrackballCamera 
    { 
    public: 
     static customMouseInteractorStyle* New(); 
     vtkTypeMacro(customMouseInteractorStyle, vtkInteractorStyleTrackballCamera); 
     MainWindow *mainWin; 

     customMouseInteractorStyle(MainWindow *ptr) : mainWin(ptr) 
     { 

     } 

     virtual void OnRightButtonDown() 
     { 
      mainWin->function(); 
      vtkInteractorStyleTrackballCamera::OnRightButtonDown(); 
     } 
    }; 
    vtkStandardNewMacro(customMouseInteractorStyle); 

Test1::Test1(QWidget *parent) 
    : QMainWindow(parent) 
{ 
     //Rendering 
     .... 
     // 

    vtkSmartPointer<customMouseInteractorStyle> style = //My custom class!!! 
    vtkSmartPointer<customMouseInteractorStyle>::New(); 
    renderWindowInteractor->SetInteractorStyle(style); 

    renderWindow->Render(); 
    renderWindowInteractor->SetRenderWindow(renderWindow); 
    renderWindowInteractor->Initialize(); 

} 

void MainWindow::function() 
{ 
} 
+0

customMouseInteractorStyleのためのあなたのコンストラクタ: 'customMouseInteractorStyle(メイン・ウィンドウ* ptrが)' 'パラメータなしcustomMouseInteractorStyle()'メインウィンドウへのポインタを設定するために別の関数を使用する必要があります。 – drescherjm

+0

初期化はどのように行われますか? これは許されない: \t空隙ptr_function(メインウィンドウ* PTR):メインウィンドウ(PTR) \t { \t \t \t} – Brian

答えて

0
class customMouseInteractorStyle : public vtkInteractorStyleTrackballCamera 
    { 
    public: 
     static customMouseInteractorStyle* New(); 
     vtkTypeMacro(customMouseInteractorStyle, vtkInteractorStyleTrackballCamera); 
     MainWindow *mainWin; 

     customMouseInteractorStyle() 
     { 

     } 

     void function(MainWindow *ptr) 
     { 
      mainWin = ptr; 
     } 

     virtual void OnRightButtonDown() 
     { 
      mainWin->function(); 
      vtkInteractorStyleTrackballCamera::OnRightButtonDown(); 
     } 
    }; 
    vtkStandardNewMacro(customMouseInteractorStyle); 

Test1::Test1(QWidget *parent) 
    : QMainWindow(parent) 
{ 
     //Rendering 
     .... 
     // 

    vtkSmartPointer<customMouseInteractorStyle> style = //My custom class!!! 
    vtkSmartPointer<customMouseInteractorStyle>::New(); 
    renderWindowInteractor->SetInteractorStyle(style); 
    style->function(this); 

    renderWindow->Render(); 
    renderWindowInteractor->SetRenderWindow(renderWindow); 
    renderWindowInteractor->Initialize(); 

} 

void MainWindow::function() 
{ 
} 
関連する問題