有没有办法设置全局mouseReleaseEvent?
我的意思是我有 QMainWindow 和它 QFrame 和 init QListView 和它
我有构造 QListView 的小部件,在小部件内部我有各种标签和文本字段。
所以我想在我的应用程序中的任何地方检测 mouseRelease 我必须在所有小部件中实现 mouseReleaseEvent?
void ItemWidget::mouseReleaseEvent(QMouseEvent *event)
{
if(event->button() == Qt::LeftButton)
{
;
}
event->accept();
}
最佳答案
根据QMouseEvent documentation ,接收鼠标按下的小部件也将获得鼠标释放。因此,除了接收原始按下的小部件之外,您不必再寻找鼠标释放。这通常称为鼠标“抓取”。
您可能还想检查 Qt::WA_NoMousePropagation
是否未在您的 child 上设置。如果已设置,它将确保您的鼠标事件不会冒泡。
如果你真的想捕获所有鼠标释放事件,你可以尝试安装一个 event filter在 QApplication 本身上。这是一个有点繁重的解决方案,但您应该获得每个鼠标释放事件。
关于c++ - 当我有一堆小部件时,Qt 如何设置全局 mouseReleaseEvent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9274693/