所以我尝试创建自己的自定义交互器样式,继承自 vtkInteractorStyleSwitch。
我遇到的这个问题是我试图禁用关闭 vtk 窗口的“q”快捷方式。
据我了解,我需要做的就是实现我自己的 OnChar() 方法,并且在按下 q 时不调用 char 上的派生类。但是,这不起作用,当按下 q 时,关闭窗口的命令仍在运行。
作为记录,当我按 q 时,我看到了我的调试语句“Q PRESS”。我似乎无法弄清楚是谁在调用命令关闭窗口,我假设它位于派生类的某个位置。
class PlaneInteractorStyle : public vtkInteractorStyleSwitch {
public:
static PlaneInteractorStyle*
New();
vtkTypeMacro(PlaneInteractorStyle, vtkInteractorStyleSwitch);
virtual void
OnChar() override
{
// Get the key press
vtkRenderWindowInteractor* rwi = this->Interactor;
std::string key = rwi->GetKeySym();
std::cout << "KEYY: " << key << "\n";
if (key == "q") {
// do nothing
std::cout << "Q PRESS\n";
}
}
};
vtkStandardNewMacro(PlaneInteractorStyle);