Qt/VTK:访问自定义交互器中的函数 class
Qt/VTK: Access functions in custom interactor class
我有一个名为 MainWindow 的 Qt GUI。
我正在 MainWindow
的构造函数中渲染一些 3D 对象。
此外,我在 MainWindow.cpp 中声明了 vtkInteractorStyleTrackballCamera
的自定义 class,就像在 this example.
中一样
现在我想从 MainWindow
class 中的函数 OnLeftButtonDown()
从我自定义的 class Interactor 中调用一个函数。
我尝试将 MainWindow
class 继承到自定义交互器 class,如下所示:
class customMouseInteractorStyle : public vtkInteractorStyleTrackballCamera, MainWindow
但这行不通。
如何访问 MainWindow
的功能?
按下鼠标左键时自动调用该函数
// 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
}
为了回答你的具体问题,所以你说你有这个构造函数:
customMouseInteractorStyle(MainWindow *ptr) { ptr->MainWindowfunction(); }
要使这个工作,首先添加一个成员变量:
private:
MainWindow *mainWin;
然后更改构造函数对其进行初始化:
customMouseInteractorStyle(MainWindow *ptr) : mainWin(ptr) {}
然后你的OnRightButtonDown
变成:
virtual void OnRightButtonDown()
{
mainWin->MainWindowfunction();
vtkInteractorStyleTrackballCamera::OnRightButtonDown();
}
我有一个名为 MainWindow 的 Qt GUI。
我正在 MainWindow
的构造函数中渲染一些 3D 对象。
此外,我在 MainWindow.cpp 中声明了 vtkInteractorStyleTrackballCamera
的自定义 class,就像在 this example.
现在我想从 MainWindow
class 中的函数 OnLeftButtonDown()
从我自定义的 class Interactor 中调用一个函数。
我尝试将 MainWindow
class 继承到自定义交互器 class,如下所示:
class customMouseInteractorStyle : public vtkInteractorStyleTrackballCamera, MainWindow
但这行不通。
如何访问 MainWindow
的功能?
按下鼠标左键时自动调用该函数
// 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
}
为了回答你的具体问题,所以你说你有这个构造函数:
customMouseInteractorStyle(MainWindow *ptr) { ptr->MainWindowfunction(); }
要使这个工作,首先添加一个成员变量:
private:
MainWindow *mainWin;
然后更改构造函数对其进行初始化:
customMouseInteractorStyle(MainWindow *ptr) : mainWin(ptr) {}
然后你的OnRightButtonDown
变成:
virtual void OnRightButtonDown()
{
mainWin->MainWindowfunction();
vtkInteractorStyleTrackballCamera::OnRightButtonDown();
}