如何在“单击”槽中使用 QApplication::mouseButtons() 来判断鼠标按钮?

2024-04-22

我有一个 QMainWindow,并且想要处理来自其中较小的小部件(例如 tableview)的“单击”信号。

最初我将信号连接到这个 QMainWindow 的插槽,这是最常见的方法。 现在我需要判断单击了哪个鼠标按钮,并对左右按钮执行不同的操作,我发现“单击”信号没有鼠标事件信息。

我尝试实现“mousePressEvent”功能,但仍然存在一些问题。如果鼠标操作作用在较小的小部件上,则 MainWindow 将不会进入其 mousePressEvent。

有文档说我们可以通过 QQApplication::mousebuttons() 来判断按钮

http://bugreports.qt-project.org/browse/QTBUG-1067 http://bugreports.qt-project.org/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->mouseButtons() 总是返回 0,如何通过 QApplication::mouseButtons 获取单击的鼠标按钮?

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

void clickItem( const QModelIndex & idx){.....}

你得到 0 因为 clicked 是在鼠标释放后发出的,而不是在鼠标按下时发出的。你想达到什么目的?也许尝试将小部件 contextMenuPolicy 设置为自定义,然后连接到信号 contextMenuRequested (用于右键单击)并单击用于左键单击?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在“单击”槽中使用 QApplication::mouseButtons() 来判断鼠标按钮? 的相关文章

  • 无法在 QGLWidget 中设置所需的 OpenGL 版本

    我正在尝试在 Qt 4 8 2 中使用 QGLWidget 我注意到 QGLWidget 创建的默认上下文不显示 OpenGL 3 1 以上的任何输出 Qt wiki 有一个教程 http qt project org wiki How t
  • 如何在 QT 中绘制点?

    我正在用 QT 用 C 编写一个应用程序 其中有 n 个点并计算它的凸包 然而 一旦计算出来 我不知道如何绘制点并绘制船体的边界 制作菜单按钮等很简单 但我不确定我是否知道执行此操作的工具 你怎么做到这一点 图形视图 addEllipse
  • 如何使 Python、QT 和 Webkit 在无头服务器上工作?

    我有 Debian Linux 服务器 我用它来做各种事情 我希望它能够完成一些我需要定期完成的网络抓取工作 这段代码可以是在这里找到 http bit ly QeqvzX import sys from PyQt4 QtGui impor
  • 如何在 Qt Creator 中编辑 QtWebKit 的右键上下文菜单?

    好吧 这是我的困境 我正在使用 Qt Creator 制作一个使用 Webkit 的简单应用程序 我认为 Qt Creator 会有一种简单的方法来使用信号和槽编辑器编辑右键单击上下文菜单 但事实证明这不是真的 我知道 webkit 有与上
  • Qt 人工鼠标点击无法正常工作

    小玩具应用程序可以在这里找到 http gist github com 517445 http gist github com 517445 我正在尝试将人工鼠标事件发送到小部件 我使用QApplication sendEvent为此 接下
  • 在 QtCreator 中使用 .pro 和 .pri 正确(树)显示 Qt 项目

    是否可以使用项目包含文件 pri 显示不止一个额外级别 例如如果 pro文件包括 pri文件包含两个 pri files pro pri pri pri 在 QtCreator 项目 中显示具有误导性 pro pri pri pri 它根本
  • 在没有加载器的情况下实例化内联组件

    有没有办法实例化内联Component 即在同一文件中定义 而不使用Loader 我不太关心使用的性能影响Loader因为我要用很多东西污染我的文件Loader包装纸 我发现从 JavaScript 创建动态 QML 对象 http doc
  • QStyledItemDelegate 绘制自定义小部件失败

    在我的一个项目中 我使用的是QTableWidget为了显示一些复杂的计算结果 为了提高表格的可读性 我需要在单个表格单元格内显示两个对齐的值 后来我想通过使用颜色或箭头等来进一步自定义小部件 为此我源自QStyledItemDelegat
  • 第一次信号发射后自动断开

    我正在从文件加载网页 然后替换其中的一些 html self template web page QtWebKit QWebPage self template web page mainFrame load QtCore QUrl tem
  • QT:删除QGridLayout中QLabel之间的空格

    我将一些具有不同颜色的 QLabels 添加到 QGridLayout 作为 QWidget 的布局 现在我在每个 Qlabel 与下一个 Qlabel 之间有一个间距 我想将其删除 我尝试将标签的边距设置为 0 将 GridLayout
  • 在标准 python 线程中发出信号

    我有一个线程应用程序 其中有一个网络线程 UI 部分通过callback到这个线程 线程是一个normalpython 线程 它是NO QThread 是否可以在该线程内发出 PyQT Slot 不 不可能像这样从 python 线程发出
  • 完全彻底卸载QT Creator

    问题 如何从 Linux 机器上卸载 QT Creator 我的 Debian Jessie 机器上的安装已损坏 我尝试过重新安装 修复等 但没有成功 建议我完全卸载 获取最新版本并重新安装 问题是我不确定如何执行此操作 每次我尝试时 QT
  • QML 中可重用的字体属性[重复]

    这个问题在这里已经有答案了 在 QML 中 我希望能够定义一组字体属性以进行简单的语义重用 例如 代替 Text text This is a header font family Encode Sans weight Font Black
  • Qt:不完整类型和前向声明的使用无效

    我有一些误解 A h ifndef A H define A H include B h class A public B Q OBJECT public A endif A cpp include A h A A B ui gt blan
  • 针对初学者的 QT 商业许可证与非商业许可证 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 QT 许可似乎非常反学习 因为据我所知 用它开发的任何东西都只能是商业的当且仅当 its entire开发是在使用商业许可证的情况下完成的
  • 如何从 C++ 程序中重新启动 Linux?

    我有一个 Qt 4 GUI 我需要在下拉菜单中提供一个选项 允许用户选择重新启动计算机 我意识到这对于以其他方式重新启动计算机的能力来说似乎是多余的 但选择需要保留在那里 我尝试使用 system 来调用以下内容 suid root she
  • Qt QML 数据模型似乎不适用于 C++

    我一直在使用中的示例http doc qt digia com 4 7 qdeclarativemodels html http doc qt digia com 4 7 qdeclarativemodels html这是 QML 声明性数
  • Qt(在 Windows 上)将权限级别设置为“requireAdministrator”

    我正在使用 Qt Creator 并努力制作 exe文件默认以管理员身份运行 在线阅读所有解决方案我试图将这一行放入我的 pro file QMAKE LFLAGS MANIFESTUAC level requireAdministrato
  • 通过单击内部小部件而不是标题栏来移动窗口

    在 Windows 中 当我创建 QMainWindow 时 我可以通过单击标题栏并拖动它来在屏幕上移动它 在我的应用程序中 我使用隐藏了标题栏setWindowFlags Qt CustomizeWindowHint 我正在尝试使用小部件
  • 为什么 QT 设计器重新调整大小或不允许我缩小或展开小部件或按钮?

    很多时候 在使用 QT 设计器时 我发现自己需要通过缩小或扩展来调整事物的大小 每当我尝试这样做时 程序都不允许我这样做 而只是恢复到将对象放置在窗口中时给我的原始默认大小 无论我的布局如何 为什么要这样做 是否有可能改变这一点 以便我可以

随机推荐

  • 如何在plotly中绘制饼图?

    如何在 fig 中绘制 pie1 子图 使其位于 第一个 位置 我就是这样做的 但没有成功 import pandas as pd import numpy as np import seaborn as sns import plotly
  • 如何将命名管道字符串从非托管代码空间发送到托管代码空间?

    我似乎遇到了命名管道 101 问题 我有一个非常简单的设置来连接从 C 非托管应用程序传输到 C 托管应用程序的单工命名管道 管道已连接 但我无法通过管道发送 消息 除非我关闭似乎刷新缓冲区并传递消息的句柄 就好像消息被屏蔽了一样 我尝试颠
  • 发生未处理的异常:开发服务器仅支持每个构建本地化单个区域设置

    请告知如何修复此错误 我正在尝试实现本地化 但遇到了此问题 我使用的指南 https angular io guide i18n merge translations into the app https angular io guide
  • Django 调试工具栏仅适用于管理部分

    嘿 我已经使用 Django 1 2 1 一段时间了 前几天遇到了 Django 调试工具栏 它看起来真的很有用 我真的很想尝试一些东西 我完全按照自述文件所说的安装了 一步步 我将中间件放在最后 以防万一出现问题 但我使用的是相当标准的中
  • 使用递归对数字求和

    我刚刚研究了递归的概念 我想尝试一个简单的例子 在下面的代码中 我尝试获取数字 1 2 3 4 5 并使用递归将它们加在一起 我预计结果是 15 但我的代码返回 16 我究竟做错了什么 Code static void Main strin
  • Terraform 13,根据另一个变量的值验证变量

    有没有办法实现以下逻辑 variable environment description The environment this will be run in can only be set to preprod test prod ty
  • file_get_contents:无法设置本地证书链文件

    我们使用 Composer 来升级 Satis 的依赖项 最近的服务器升级后 我们无法这样做 缩小可能的原因后 我们发现 file get contents php 函数在尝试建立 ssl 连接时失败 我们使用以下脚本来测试我们的 ssl
  • 使用 pandas 将一列字典拆分/分解为单独的列

    我的数据保存在postgreSQL数据库 我正在使用 Python2 7 查询这些数据并将其转换为 Pandas DataFrame 但是 该数据帧的最后一列内部有一个值字典 数据框df看起来像这样 Station ID Pollutant
  • 3D 空间:使用鼠标指针沿着对象指向的方向

    给定相机面向的方向的 3D 向量以及 3D 空间中 3D 对象的方位 方向向量 如何计算鼠标指针在屏幕上必须遵循的 2 维斜率 以便在视觉上沿着所述物体的方向移动 基本上 我希望能够单击箭头并通过拖动它来使其前后移动 但前提是鼠标指针沿着箭
  • 从 shell 脚本内的 php 脚本检索退出状态

    我有一个 bash shell 脚本 它调用一些像这样的 PHP 脚本 bin bash php f somescript php php f anotherscript php 我想根据这些脚本的结果编写错误日志和 或活动报告 有什么方法
  • 从 Jenkins 运行 Robot Framework 测试时,浏览器永远不会打开

    我正在尝试在我的 OSX 笔记本电脑上运行 Jenkins 的 RF Selenium2Library 测试 Jenkins 默认安装为用户 jenkins 我安装了 Jenkins 的 RF 插件并设置了环境变量 一切正常 除了浏览器永远
  • 如何将当前行与r中所有以前的行进行比较

    我在 r 中有一个数据框 No value time 1 2 12 2 4 23 3 6 13 4 8 8 5 10 13 6 12 24 我想要的数据框是 No value time flag 1 2 12 0 NA 2 4 23 0 4
  • git 的“文件模式”是什么?

    什么是 gitfilemode 对我来说 它在每个仓库中 git config文件 靠近顶部 core filemode true 它是什么 这是什么意思 与以下有什么关系吗 bare false 我也不太明白 A git 裸仓库 详细信息
  • Heroku 无法将我的 Laravel 应用程序识别为 PHP 应用程序,并且不进行 Composer 安装

    我正在尝试在 Heroku 上发布我的 Laravel 应用程序 我已从 gitignore中排除了composer lock文件 并创建了一个包含 web vendor bin heroku php apache2 public 我创建了
  • 两个具有相同 id 的 XML 元素

    我试图以完全相同的方式修改两个 TextView 我想我可以给它们相同的 id 并使用 findViewById 和 setText 方法在两行中更改这些 TextView 但似乎只有一个 TextView 发生了变化 有没有办法做到这一点
  • 向量化函数 (Python)

    我是 python 新手 尝试进行硬件分配 但它不断向我抛出此错误 在 iPython Notebook 中 TypeError unsupported operand type s for or pow list and float 这是
  • Ruby - 将数组映射到哈希图

    我有一个数组和一个返回给定值的函数 最终我想创建一个哈希映射 将数组的值作为键值 将 f key value 的结果作为值 是否有一种干净 简单的方法 例如类似于数组的each map 使用块来执行此操作 所以相当于 hsh 1 2 3 4
  • OpenCV 对白色像素进行分组

    我已经完成了艰苦的工作 将 MacBook 上的 iSight 摄像头变成了红外摄像头 对其进行了转换 设置了阈值等 现在得到的图像如下所示 alt text http www tommed co uk images opencv ir e
  • 将位图居中并重复边缘像素

    我正在尝试在我的 Android 应用程序中使用图像作为背景 如果图像不适合屏幕 我希望图像水平居中并垂直顶部 应通过重复边缘来填充剩余的屏幕区域 我的布局 xml 如下所示
  • 如何在“单击”槽中使用 QApplication::mouseButtons() 来判断鼠标按钮?

    我有一个 QMainWindow 并且想要处理来自其中较小的小部件 例如 tableview 的 单击 信号 最初我将信号连接到这个 QMainWindow 的插槽 这是最常见的方法 现在我需要判断单击了哪个鼠标按钮 并对左右按钮执行不同的