gpt4 book ai didi

c++ - Qt 工具提示在显示时将窗口置于最前面

转载 作者:可可西里 更新时间:2023-11-01 10:44:47 25 4
gpt4 key购买 nike

[Windows 7 上的 Qt 5.4.2] 在同一个 Qt 应用程序中创建两个窗口(QDialog 或 QMainWindow)。他们每个人都有一个相关的工具提示。定位窗口 d2 部分重叠窗口 d1。将鼠标悬停在 d2 窗口上,将看到工具提示“d2 窗口”弹出。问题是鼠标悬停在 d1 窗口上不仅会显示工具提示“d1 窗口”,还会将窗口 d1 移到前面。走到最前面不是理想的行为。此外,单击 d2 窗口客户区不会将 d2 移至前台。显示工具提示时如何不让窗口出现?我已经设置了 WA_AlwaysShowToolTips 和 WA_ShowWithoutActivating 标志。

*只有一个qt窗口时似乎不会出现这个问题,但我的设计需要多个窗口。

QDialog * d1=new QDialog();
d1->setToolTip("d1 window");
d1->setAttribute(Qt::WA_AlwaysShowToolTips);
d1->setAttribute(Qt::WA_ShowWithoutActivating);
d1->show();

QDialog * d2=new QDialog();
d2->setToolTip("d2 window");
d2->setAttribute(Qt::WA_AlwaysShowToolTips);
d2->setAttribute(Qt::WA_ShowWithoutActivating);
d2->show();

使用 spy++ 显示在显示工具提示时发送了 WM_WINDOWPOSCHANGING 窗口消息:WM_WINDOWPOSCHANGING lpwp:0E14C740WM_WINDOWPOSCHANGING lpwp:0E14C740WM_WINDOWPOSCHANGING lpwp:0E14CA08

最佳答案

此错误最初出现在 Qt 5.0 中,在 Qt 5.3.0 (QTBUG-39147) 中报告,并在 5.9.2 中修复(2017 年 7 月 19 日)。删除 Qt_WS_* 宏(替换为 Q_OS_* 宏)和 widgets/kerna/qtooltip.cpp 模块的不完整维护导致 QTipLabel 被实例化为客户端小部件作为其父小部件。这是 Windows 上的一个已知问题,它直接导致了此功能障碍(显示工具提示会引发整个窗口)。

请参阅此 Qt 代码审查页面中的“补丁集 6”及其关联的“gitweb”链接和原始错误报告:

关于c++ - Qt 工具提示在显示时将窗口置于最前面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30801093/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com