在 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 个按钮。出于某种原因,它只是鼠标左键(我想要中间按钮(。
相关文章:
- WinAPI挂钩鼠标
- 将鼠标悬停在问题上时与预期">"相关的代码错误
- 跟踪滚动条上的鼠标事件
- SendInput()鼠标移动计算
- 为什么我的点没有在 OpenGL 中绘制鼠标所在的位置?
- 如何在鼠标挂钩过程中检测拖动
- Win32 发送输入鼠标移动滞后并冻结
- 将鼠标和键盘输入发送到 unity3d 游戏 (Rust)
- 有没有办法区分Qt小部件是通过鼠标单击还是通过按表键获得焦点?
- 在 macOS 中使用 C/C++ 设置鼠标光标图像
- 如何通过拖动鼠标QT检查按钮?鼠标移动事件
- SDL2 调整窗口大小后如何缩放鼠标坐标?
- 如何在QSplashScreen中禁用鼠标单击
- 粒子系统:所有粒子都朝同一方向运动
- C++鼠标单击时的屏幕截图不起作用
- 在 GTKMM 中捕捉鼠标运动
- setCursor()有时在鼠标快速运动中失败
- 用C++睡眠特定的鼠标运动
- 允许子面板处理鼠标运动事件
- SDL2崩溃白色InputHandler鼠标运动