如何在单击插槽中使用QApplication::MouseButton()辨别鼠标按键?

编程入门 行业动态 更新时间:2024-10-06 16:27:55
本文介绍了如何在单击插槽中使用QApplication::MouseButton()辨别鼠标按键?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我有一个QMainWindow,希望处理来自其中较小小部件(如Tableview)的"已单击"信号。

最初我将信号连接到此QMainWindow的一个插槽,这是最常见的方法。 现在我需要告诉鼠标被点击的是哪个按钮,并对左键和右键做不同的事情,我发现"CLICKED"信号没有鼠标事件信息。

我尝试实现了MousePressEvent函数,但仍然存在一些问题。如果鼠标操作作用于较小的小部件,则主窗口不会进入其MousePressEvent。

一些文档说我们可以通过QQApplication::MouseButton()

来辨别按钮

bugreports.qt-project/browse/QTBUG-1067

我还找到了一些示例代码。然而,这是用于"新闻事件",但我想获得鼠标按钮的"点击事件"。 以下是示例代码:

connect(moduleTree,SIGNAL(itemPressed(QTreeWidgetItem *, int)),this,SLOT(SlotItemClicked(QTreeWidgetItem *, int))); void CGuiMainwindow::SlotItemClicked(QTreeWidgetItem *item, int column) { if (qApp->mouseButtons() == Qt::LeftButton) { return; } if (qApp->mouseButtons() == Qt::RightButton) { ...... } }

当我尝试这样做时,两个if语句都不能满足,我不知道为什么。QApp->MouseButton()总是返回0,如何通过QApplication::MouseButton获取点击的鼠标按钮?

在我的代码中,插槽如下所示:

void clickItem( const QModelIndex & idx){.....} 推荐答案

您得到0,因为单击是在释放鼠标后发出的,而不是在按下鼠标时发出。你想实现什么目标?也许可以尝试对您的小部件上下文MenuPolicy进行设置以自定义,然后连接到信号ConextMenuRequsted(用于右击)并单击以用于左键单击?

更多推荐

如何在单击插槽中使用QApplication::MouseButton()辨别鼠标按键?

本文发布于:2023-11-28 06:22:40,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1641277.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:插槽   鼠标   单击   按键   如何在

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!