Qt 检测标题栏上的鼠标单击(Windows)

2024-02-07

event 或 mousePressEvent 函数适用于小部件内部,但我想在单击标题栏(菜单栏的上部,包含关闭按钮等)时捕获

我怎样才能做到这一点?


您可以重写nativeEvent,然后获取鼠标位置与geometry(不包括窗口框架)和frameGeometry(包括窗口框架)进行比较,以检测它是否击中标题栏

bool MyClass::nativeEvent(const QByteArray & eventType, void * message, long * result)
{
    MSG* msg = (MSG*)(message);
    if (msg->message == WM_NCLBUTTONDOWN)
    {

        int mouseX = GET_X_LPARAM(msg->lParam);
        int mouseY = GET_Y_LPARAM(msg->lParam);
        QRect frame = frameGeometry();
        QRect content = geometry();

        qDebug() << "mouseX: " << mouseX << "mouseY:" << mouseY;
        qDebug() << "frame: " << frame;
        qDebug() << "content: " << content;

        if (mouseY < content.y() && mouseY >= frame.y())
        {
            qDebug() << "Hit title bar";
        }
    }

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

Qt 检测标题栏上的鼠标单击(Windows) 的相关文章

  • WINAPI/DWMAPI 不规则形状的模糊窗口

    注意 这不是关于无边框窗口的问题 因此 前几天我在 Windows 7 上浏览 开始 菜单时偶然发现了这个程序 它是一个本机 Windows 程序 称为 数学输入面板 现在 我对窗户的形状很好奇 我知道它并不是完全由 DWM 绘制的 因为边
  • QT/QML Android App,点击通知栏时打开应用程序

    我为 Android 应用程序制作了一个 QT 当我单击平板电脑中上面看到的按钮通知栏时 但是 如果单击通知 我的应用程序将打开 聚焦 不知道 并显示黑色窗口 简单来说怎么做呢 我的代码是 package org ays operation
  • Qt中如何获取鼠标在屏幕上的位置?

    我想获取屏幕上的鼠标坐标 我怎样才能在 Qt 中做到这一点 在 Windows 上 使用 C 我正在做类似答案中建议的事情对于这个问题 https stackoverflow com q 11737665 1420197 正如文档所述 QC
  • 监控进程的网络使用情况?

    C 或 C C Win32 中有没有一种方法可以监视某个进程的网络使用情况 显然没有您构建的应用程序 我想只监视 1 个进程大约一个小时左右 然后返回仅该进程 例如 Limewire 使用的字节 是否可以 我知道 Windows 上的 ne
  • Win32 自定义绘制树视图控件

    我正在尝试使用 NM CUSTOMDRAW 消息自定义树视图控件 我只是想用灰色绘制所有其他可见的项目 这是绘制的代码 INT CResourceOutliner On WM NOTIFY HWND hDlg WPARAM wParam L
  • 获取保证具有完整(4 位)年份的 LOCALE_SSHORTDATE 的正确方法是什么?

    我想创建一个日期时间选择器控件 它显示日期和时间 作为DTS SHORTDATECENTURYFORMAT and DTS TIMEFORMAT风格 由于日期时间选择器中没有内置这种样式 因此我必须自己做GetLocaleInfoEx 我注
  • 如何使用 Qtimer 添加 1 秒延迟

    我目前有一个方法如下 void SomeMethod int a Delay for one sec timer gt start 1000 After one sec SomeOtherFunction a 这个方法实际上是一个附加到信号
  • 使用 cryptoapi CryptImportKey 导入公钥时出错

    我想将公钥 blob 导入到 CSP 但发生了错误 BYTE pbData 0xEB 0x2A 0x38 0x56 0x86 0x61 0x88 0x7F 0xA1 0x80 0xBD 0xDB 0x5C 0xAB 0xD5 0xF2 0x
  • 检查Windows电源管理是否关闭了显示器

    如何在 Windows 7 和 XP 中以编程方式检查 Windows 电源管理 是否已关闭显示屏 如果能收到一个活动就更好了 我不认为 XP 可以做到这一点 Windows 7 中有各种与电源管理相关的好东西 这Windows API 代
  • 如何在 Qt 中以编程方式制作一条水平线

    我想弄清楚如何在 Qt 中制作一条水平线 这很容易在设计器中创建 但我想以编程方式创建一个 我已经做了一些谷歌搜索并查看了 ui 文件中的 xml 但无法弄清楚任何内容 ui 文件中的 xml 如下所示
  • 创建具有特定权限的线程C++

    我有一个多线程应用程序 我想创建一个具有不同用户权限的线程 例如 多域管理员权限 但我找不到任何 Win32 APICreateThread要做到这一点 如何创建具有特定用户权限的线程 thanks 调用 CreateThread CREA
  • 如何将图像显示为缩略图

    我有一个QTreeView显示硬盘驱动器和目录 我也有一个QListView显示图像文件如下 但我想将图像显示为缩略图 如下所示 My code mainWidget mainWidget QWidget parent QWidget pa
  • 如何使用 C++ 禁用另一个进程中窗口上的关闭按钮?

    我需要从另一个进程禁用窗口上的关闭按钮 我有它的句柄hWnd我尝试这样做 DWORD dwCStyle GetClassLongPtr hWnd GCL STYLE SetClassLongPtr hWnd GCL STYLE dwCSty
  • 如何获取 QTableView 的标题列表?

    我有一个QTableView我的对话框中的对象 我需要访问该表的水平标题并将它们放入QStringList object 尽管进行了大量搜索 但我在 Qt 文档中找不到如何获取此标头列表 编辑 我发现的最接近的地方是this https w
  • 如何使QTableView类的restoreState()和saveState()正常工作?

    首先 我想说 我的问题已经在这里讨论过 并且这里是 https stackoverflow com questions 1163030 qt qtableview and horizontalheader restorestate 但答案并
  • QTimer 一点也不准确?

    运行在 Windows7 64 位机器上 具有非常强大的 CPU 8 核 16 线程 我使用 QTimer 以 50Hz 触发函数调用 但我最终得到了 30Hz 函数调用本身肯定需要不到 10 毫秒才能完成 整个过程发生在一个单独的线程中
  • 调整大小时在窗口中绘图留下未绘制的边框

    我遇到的问题看似微不足道 但我找不到解决的方法 这里是 我有一个窗口 里面有一些图形 为了简单起见 我们假设它是一个实心绿色矩形 填充了窗口的整个客户区域 我希望每次窗口改变大小时都重新绘制这个矩形并填充整个窗口 我最初做的就是这样的 我已
  • 在 MacOS 终端上运行 ffmpeg [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我对 MacOS 相当陌生 我发现使用终端来获取信息并不容易ffmpeg和我在 Window 上一样正常运行 我有 ffmpeg 二进制文件ffmpe
  • 设置窗口像素的正确(且无闪烁)方法?

    我正在努力找出在 WM PAINT 期间将纯 RGBA 值数组转储到 Win32 窗口的客户区的正确方法 我有以下代码 但它看起来已经很复杂 我什至还没有完成 case WM ERASEBKGND return 1 case WM PAIN
  • 在运行时,我如何判断我是否在 WinXP+ 上? win32

    我正在进行一些 win32 字符串 API 调用 并假设字符串以宽字符串形式出现 这在 XP 和更高版本上有效 我该如何断言这一点 这是运行时检查还是编译时检查 我做错了吗 这是一个例子 typedef std basic string

随机推荐

  • 如何在linux中用C设置IP地址

    通过使用strace and ifconfig 我发现可以这样设置IP地址 include
  • 无模式、无父的 wxDialog 仍然始终位于 z 顺序中的 wxFrame 窗口之上?

    我的程序打开一个基于 wxFrame 的窗口和多个无模式且无父的基于 wxDialog 的窗口 除了基于 wxDialog 的窗口坚持始终位于基于 wxFrame 的窗口之上之外 这一切都工作得很好 我知道关于wxDIALOG NO PAR
  • 安装 Mac Homebrew 时遇到问题

    我尝试了各种论坛和谷歌 但没有成功 我正在尝试在 OS X 10 6 8 上安装 Mac Homebrew 当我尝试从 Homebrew 主页执行安装命令时 ruby lt curl fsSkL raw github com mxcl ho
  • 当包含的控件获得焦点时防止自动滚动

    我有一个Panel有两个Button其上有一个 其中一个部分被隐藏 当部分隐藏的按钮获得焦点时 例如当单击另一个按钮然后单击它 原始按钮 时 面板会滚动 我需要垂直滚动条 但不需要auto滚动 并且如果没有自动滚动 似乎无法获得有效的滚动条
  • 过滤 CollectionViewSource

    我想做一个ComboBox绑定到我的数据 带有filter 为此我创建了一个TextBox and a ComboBox 在后面的代码中 我读取一个文件并生成 Channel 类的对象 这些对象存储为ComboBox 尽管编译器不会抛出任何
  • Javascript 中最快的类/对象访问/实例化是什么

    在探索构建类的几种不同方法时 我很好奇实例化和访问类的最快方法是什么 基于另一个问题的输入 Javascript 作用域和 self this this this that this https stackoverflow com ques
  • 克隆 git 存储库并保留无法访问的提交

    有没有办法克隆远程 git 存储库 同时保留该存储库中可能存在的任何无法访问的提交 场景是这样的 我需要恢复从我维护的服务器上的裸 git 存储库中删除的分支 我有这个分支的最后一次提交的哈希值 但是常规的 git 命令似乎无法在裸存储库上
  • 实体框架数据上下文与数据库不同步?

    所以 情况是这样的 我调用 AddtoObject 在数据库中插入一个项目 然后调用 SaveChanges 然后 我调用存储过程来更新当前插入的记录 然后 我再次调用 Save Changes 当我查询数据库时它具有正确的更新值 但是实体
  • 使用 EGIT 获取时存储凭据失败

    最初我遇到了与中描述的相同的问题egit 未授权 https stackoverflow com questions 14259265 egit not authorized 首先 我成功从 Bitbucket 克隆了存储库 然后 我尝试获
  • 是否可以在 ScrollView 中添加 ViewPager?

    我正在尝试使用ViewPager里面的一个ScrollView 但是ViewPager没有出现 如果我删除ScrollView the ViewPager看起来不错 我创建了一个简单的测试项目 内容如下 main xml布局
  • 将引用类型和值类型作为参数传递给方法之间的区别

    一整天都在我的脑海中萦绕着这种困惑 我对传递给方法的引用类型和值类型感到非常困惑 假设我有 2 节课Class A and Class B分别对应于引用类型和值类型 public Class A public static void mai
  • 通过 websocket 的 SIP 到真正的 SIP

    我正在尝试实现一个 sip 服务器用于从HTMLsip客户端 使用sipml5制作 在我研究这样做的过程中 我遇到了 sip over web sockets 这可能对我有用 但是 我不确定用户代理是否通过 sip over 连接web s
  • 从 FlinkML 多元线性回归中提取权重

    我正在运行 Flink 0 10 SNAPSHOT 的示例多元线性回归 我不知道如何提取权重 例如斜率和截距 beta0 beta1 无论你想怎么称呼它们 我对 Scala 不太熟悉 这可能是我问题的一半 感谢任何人可以提供的任何帮助 ob
  • NSView 中的多线程绘制

    在我的代码中 我子类化了NSView并在其drawRect方法中 我生成三个线程来执行绘图 void drawRect NSRect dirtyRect self window setAllowsConcurrentViewDrawing
  • Firefox 上的 Javascript 浏览器抖动

    是否可以使用Javascript来撼动Firefox浏览器 我找到了一个适用于 Safari 的脚本 但该脚本似乎不适用于 Firefox http www jhuskisson com javascript earthquake effe
  • R ifelse 语句

    我对 R 还很陌生 我有以下由字符组成的数据集 数据框 Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y N N Y Y Y Y Y Y Y Y N Y Y Y Y Y Y
  • 错误:请求对象已被使用

    我不断在控制台日志中收到此错误 未捕获 承诺中 类型错误 无法在 ServiceWorkerGlobalScope 上执行 获取 无法使用已使用的请求对象构造请求 我尝试更改我的 Service Worker 但不起作用 self addE
  • Facebook 在分享我自己的页面时未检测到视频

    我有一个包含许多视频页面的网站 每页只有一个视频 当我在 Facebook 上分享其中一个页面的链接时 它不被视为视频 而只是一篇标准文章 缩略图 标题和描述都显示良好 但我希望 Facebook 显示视频 而不是显示缩略图 我在用着vid
  • 如何从 xcode 显示 xcodebuild 命令行?

    我正在尝试从 xcodebuild 构建一个工作模拟器版本 编译可以工作 但通过 WaxSim 安装时 最终产品将无法在模拟器上运行 如果我通过 Xcode GUI 构建 那么最终产品安装时不会出现 WaxSim 的问题 我的问题是 我怎样
  • Qt 检测标题栏上的鼠标单击(Windows)

    event 或 mousePressEvent 函数适用于小部件内部 但我想在单击标题栏 菜单栏的上部 包含关闭按钮等 时捕获 我怎样才能做到这一点 您可以重写nativeEvent 然后获取鼠标位置与geometry 不包括窗口框架 和f