本文介绍了如何在单击插槽中使用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()辨别鼠标按键?
发布评论