在 gtkmm 中捕捉鼠标运动
catch mouse motion in gtkmm
我试图在按住鼠标中键时捕捉鼠标动作。目标是在 stl 查看器中实现旋转功能。
我找到了事件掩码 BUTTON2_MOTION_MASK
。但我很难弄清楚是哪个信号捕捉到了它。
这是我用来创建和挂钩事件的两行代码。这两行在 GtkApplicationWindow 构造函数中。
glWidget.add_events(Gdk::BUTTON2_MOTION_MASK);
glWidget.signal_motion_notify_event().connect(sigc::mem_fun(*this,&mainWindow::rotate));
这是我要连接的函数。
bool mainWindow::rotate(GdkEventMotion* motion_event)
{
cout<<"test"<<endl;
}
我使用的方法是否正确?当我按住鼠标中键并移动鼠标时,代码没有反应。
我设法让 glArea 小部件以这种方式对滚动做出反应。
glWidget.add_events(Gdk::SMOOTH_SCROLL_MASK);
glWidget.signal_scroll_event().connect(sigc::mem_fun(*this,&mainWindow::zoom));
我连接的功能:
bool mainWindow::zoom(GdkEventScroll *eventScroll)
{
cout<<"test"<<endl;
return true;
}
我明白了。您需要同时添加 Gdk::Button1_MOTION_MASK 和 Gdk::BUTTON_PRESS_MASK.
glWidget.add_events(Gdk::Button1_MOTION_MASK | Gdk::BUTTON_PRESS_MASK);
这将在单击鼠标左键并将其放置在小部件上时捕获信号。
BUTTON2_MOTION_MASK 将要求按下 2 个按钮。出于某种原因,它只是鼠标左键(我想要中间按钮)。
我试图在按住鼠标中键时捕捉鼠标动作。目标是在 stl 查看器中实现旋转功能。
我找到了事件掩码 BUTTON2_MOTION_MASK
。但我很难弄清楚是哪个信号捕捉到了它。
这是我用来创建和挂钩事件的两行代码。这两行在 GtkApplicationWindow 构造函数中。
glWidget.add_events(Gdk::BUTTON2_MOTION_MASK);
glWidget.signal_motion_notify_event().connect(sigc::mem_fun(*this,&mainWindow::rotate));
这是我要连接的函数。
bool mainWindow::rotate(GdkEventMotion* motion_event)
{
cout<<"test"<<endl;
}
我使用的方法是否正确?当我按住鼠标中键并移动鼠标时,代码没有反应。
我设法让 glArea 小部件以这种方式对滚动做出反应。
glWidget.add_events(Gdk::SMOOTH_SCROLL_MASK);
glWidget.signal_scroll_event().connect(sigc::mem_fun(*this,&mainWindow::zoom));
我连接的功能:
bool mainWindow::zoom(GdkEventScroll *eventScroll)
{
cout<<"test"<<endl;
return true;
}
我明白了。您需要同时添加 Gdk::Button1_MOTION_MASK 和 Gdk::BUTTON_PRESS_MASK.
glWidget.add_events(Gdk::Button1_MOTION_MASK | Gdk::BUTTON_PRESS_MASK);
这将在单击鼠标左键并将其放置在小部件上时捕获信号。
BUTTON2_MOTION_MASK 将要求按下 2 个按钮。出于某种原因,它只是鼠标左键(我想要中间按钮)。