有一个需求:当处于一定触发条件的时候,把窗口给弹到窗口系统的顶层以提醒用户处理。

原先我的写法直接激活窗口

showNormal();//显示窗口

activateWindow();//激活窗口

这样在windows 7下工作正常,在windows 10下面并不会激活窗口,显示到前面。百度没有搜到解决办法和原因,后来去查了Qt文档后发现activateWindow并不能在windows下起作用。原文为

void QWidget::activateWindow()

Sets the top-level widget containing this widget to be the active window.

An active window is a visible top-level window that has the keyboard input focus.

This function performs the same operation as clicking the mouse on the title bar of a top-level

window. On X11, the result depends on the Window Manager.

If you want to ensure that the window is stacked on top as well you should also call raise().

Note that the window must be visible, otherwise activateWindow() has no effect.

On Windows, if you are calling this when the application is not currently the active

one then it will not make it the active window. It will change the color of the taskbar

entry to indicate that the window has changed in some way. This is because Microsoft does

not allow an application to interrupt what the user is currently doing in another application.

See also isActiveWindow(), window(), show(), and QWindowsWindowFunctions::setWindowActivationBehavior().

可以发现在MAC下还得加上raise(),在windows下,当别的窗口处于焦点的时候,并不能夺过来焦点。所以像上面这样写的话,只有这个窗口是焦点窗口处于最小化或者隐藏状态的时候,才会弹出,假如在别的窗口工作的时候,并不会激活Qt窗口。看来只能修改为用Win api来实现了

activateWindow();

setWindowState((windowState() & ~Qt::WindowMinimized) | Qt::WindowActive);

raise();//必须加,不然X11会不起作用

#ifdef Q_OS_WIN32 //windows必须加这个,不然windows10 会不起作用,具体参看activateWindow 函数的文档

HWND hForgroundWnd = GetForegroundWindow();

DWORD dwForeID = ::GetWindowThreadProcessId(hForgroundWnd, NULL);

DWORD dwCurID = ::GetCurrentThreadId();

::AttachThreadInput(dwCurID, dwForeID, TRUE);

::SetForegroundWindow((HWND)winId());xcsc_jnx

::AttachThreadInput(dwCurID, dwForeID, FALSE);

#endif // MAC_OS

这样写完美的处理了windows Mac下的需求,而且不限于windows版本。

==================完====================

linux下激活窗口 qt_Qt激活窗口相关推荐

  1. linux下类似alt键移动窗口,Linux中你不可不知的快捷键

    终端中的快捷键 Tab : 补全文件名或者路径 Ctrl+C:这个键可不是用来复制的,在中端下,按下Ctrl+C就代表结速当前终端执行的程序,按下的时候一定要慎重. Ctrl+A:将光标移动到命令行的 ...

  2. x11学习一:linux下x11通过wid获取窗口类型(桌面窗口、普通窗口、dock窗口等)

    需要的库 xcb-ewmh x11 xext xrender 可能上述只需要一部分 第一步(初始化atom) //初始化atom //QX11Info::connection()是 xcb_conne ...

  3. linux下打开Mongodb命令行窗口,Linux系统下MongoDB的安装与基本操作

    Mongo DB ,是目前在IT行业非常流行的一种非关系型数据库(NoSql),其灵活的数据存储方式,备受当前IT从业人员的青睐.Mongo DB很好的实现了面向对象的思想(OO思想),在Mongo ...

  4. Linux下 Qt界面程序嵌入另一个Qt界面程序_Qt应用嵌入外部进程窗口

    项目工程的实现,想要使用多个程序进行实现,在里面存在一定的调用的过程:调查的情况如下 Qt界面程序嵌入另一个Qt界面程序[Linux] Qt界面程序嵌入另一个Qt界面程序[Linux]_ptc321的 ...

  5. python判断当前激活窗口_多种窗口都可能被激活的情况下判断其中某个是否激活...

    遇到的问题 今天测试 SAP 系统流程的时候突然出现了问题导致无法继续,问题是这样的:在 SAP 查询出结果后需要点击导出为电子表格,点击以后过几分钟会弹出这样的窗口: 然后我只需要检测 " ...

  6. Qt双击桌面快捷方式激活并使程序窗口置于最前端

    方法二转载:https://blog.csdn.net/winstonyi/article/details/108737600 qt在桌面应用程序中,会存在一个问题,官方示例中也无提及,桌面快捷方式, ...

  7. Unix/Linux下的Curses库开发指南——第三章curses库窗口

    第3 章 curses 库窗口 3 .1 curses 窗口简介 3.1.1窗口概念 窗口是 curses 库中最重要的一个组件,它实际上是屏幕上的一块矩形区域,在上面我们可以进行各种输出以及操作. ...

  8. Linux下多窗口分屏式终端--Terminator

    terminator是个很好的终端程序,在Ubuntu Linux下安装如下: sudo apt-get install terminator 常用快捷键 Ctrl+Shift+E 垂直分割窗口 Ct ...

  9. 转载在linux下执行java窗口被锁定问题

    当我们使用SpringBoot的方式开发好了我们的应用,放到我们的Linux服务器上准备上线,首先想到的可能就是通过 java -jar xxx.jar 的方式来运行我们的jar包,程序运行正常,但是 ...

最新文章

  1. 院士论坛|李德仁:测绘遥感与智能驾驶
  2. fields在php中,phpmysqli_num_fields函数怎么用
  3. jsp 知乎_JSP
  4. wsl使用可视化界面_通过 VcXsrv 在 WSL2 上使用图形化界面(xfce4)
  5. 大剑无锋之delete、drop、truncate【面试推荐】
  6. 上线到凌晨4点半 pagehelper的bug?
  7. ubuntu mysql 连接_Ubuntu 配置MySQL远程连接
  8. 如何优化你的布局层级结构之RelativeLayout和LinearLayout及FrameLayout性能分析
  9. 密码学40年|重要历史与人物
  10. IplImage中的widthStep大小计算及原理
  11. Typora恢复文件,找回忘记保存的记录
  12. 常微分方程机敏问答[1] #20210611
  13. 天下码农苦外包公司久矣
  14. 电脑永不关机(Windows10)
  15. 服务器命令里面怎么删除文件,scp删除服务器文件命令
  16. java七年_阿里七年Java程序员的总结,献给还在迷茫中的你!
  17. BIT-Vehicle Dataset - 车辆车型识别数据集
  18. [转载] UEFI+GPT双硬盘安装Win10+Ubuntu16.04双系统
  19. 3GPP TS 29244-g30 中英文对照 | 5.11 User plane inactivity detection and reporting
  20. 手机直播系统 服务器,手机直播系统平台搭建部署开发

热门文章

  1. 爬虫初探:把豆瓣读书主页上书的URL、书名、作者、出版时间、出版社全部爬下来
  2. Acer 4750 安装黑苹果_傻瓜式一键黑苹果安装
  3. 软著申请材料,软著申请文件,软著登记材料,软著登记文件
  4. iOS开发UI篇—ios应用数据存储方式(偏好设置)
  5. 多种马尔可夫链预测方法
  6. 120个极品网站 收集历时2年 - 计算机应用 - 迅雷论坛
  7. 国仁网络资讯:抖音被降权、限流、警告了怎么办;触碰了抖音哪些违规行为。
  8. 20210622——Redis概述(一)
  9. 1.python真的是万恶之源么?(初识python)
  10. hive-jdbc 的大坑