私はMainWindowというQt GUIを持っています。Qt/VTK:カスタムインタラクタクラスのアクセス機能
私はMainWindow
のコンストラクタでいくつかの3Dオブジェクトをレンダリングしています。 さらに、vtkInteractorStyleTrackballCamera
のカスタムクラスをMainWindow.cppのように宣言しました。this exampleのようになりました。
ここで、関数OnLeftButtonDown()
のMainWindow
クラスの関数を、自分のカスタムクラスのInteractorから呼び出したいと思います。
私はこのようなカスタムタラクタークラスにMainWindow
クラスを継承しようとした:
class customMouseInteractorStyle : public vtkInteractorStyleTrackballCamera, MainWindow
しかし、これは動作しません。
ここでMainWindow
の機能にアクセスするにはどうすればよいですか?
マウスの左ボタンを押すと、この機能が自動的に呼び出されます。
customMouseInteractorStyle(MainWindow *ptr) { ptr->MainWindowfunction(); }
をこの作業を行うには、最初のメンバ変数を追加します:
private:
MainWindow *mainWin;
そして、コンストラクタを変更するあなたは、このコンストラクタを持っていると言うので、あなたの特定の質問に答えるために
// Define interaction style
class customMouseInteractorStyle : public vtkInteractorStyleTrackballCamera
{
public:
static customMouseInteractorStyle* New();
vtkTypeMacro(customMouseInteractorStyle, vtkInteractorStyleTrackballCamera);
virtual void OnRightButtonDown()
{
MainWindowfunction(); // <- I want to call this
vtkInteractorStyleTrackballCamera::OnRightButtonDown();
}
};
vtkStandardNewMacro(customMouseInteractorStyle);
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
// Rendering some things
}
void MainWindow::MainWindowfunction
{
// Do something
}
は 'OnLeftButtonDown()は'別のスレッドで呼び出されていますか? – hyde
また、 'OnLeftButtonDown()'メソッドのコードを表示する必要があります。そして、「これはうまくいかない」というエラー記述は非常に貧弱ですが、正確にはどういう意味ですか?あなたはそれをコンパイルすることはできません?それはクラッシュする?何? – hyde
ありがとうございました!私はいくつかのコードを追加しました。これが私の問題を理解するのに役立ちます。 私はコンパイルできますが、デバッグはできません(ウィンドウが開かず、すべてが遅くなります)。正確でない説明を申し訳ありません – Brian