1

所以我尝试创建自己的自定义交互器样式,继承自 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);
4

0 回答 0