Qt主窗体显示最前 在delphi中使用Application.BringToFront;可以保证当前程序显示在最前。 然而今天在Qt中,没有类似函数供调用。 尝试了activeWindow,s

来源:互联网 发布:网络借贷排行 编辑:程序博客网 时间:2024/06/11 03:22

Qt主窗体显示最前

在delphi中使用Application.BringToFront;可以保证当前程序显示在最前。

然而今天在Qt中,没有类似函数供调用。

尝试了activeWindow,show,showNormal,showMaximized 等函数还是不行。

网上有方法设置窗体的windowFlags,具体方法为:

1
2
pMainForm->setWindowFlags(pMainForm->windowFlags() | Qt::WindowStaysOnTopHint);
pMainForm->showNormal();

但是该代码会导致该窗体霸道的总是在最前,无法切换到诸如浏览器等其他应用。即使再设置如下代码:

1
2
pMainForm->setWindowFlags(pMainForm->windowFlags() & ~Qt::WindowStaysOnTopHint);
pMainForm->showNormal();

也不能取消“总在最前”这个状态。

其实我就是想要其显示在最前面而已,最后想到用windows消息,模拟windows切换任务栏,但无奈不清楚windows是如何发送该消息的。

经过网上搜查,如下代码即可解决,将窗口显示到最前的效果,且无其他副作用:

1
2
3
4
5
6
7
8
9
10
if (pMainForm->isMinimized())
{
    pMainForm->showNormal();
}
//设置窗口置顶
::SetWindowPos(HWND(pMainForm->winId()), HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW);
::SetWindowPos(HWND(pMainForm->winId()), HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW);                  
 
pMainForm->show();
pMainForm->activateWindow();

如果只设置 HWND_TOPMOST ,就会又出现总是在最前的情况。

 

参考:http://forum.qt.io/topic/6032/bring-window-to-front-raise-show-activatewindow-don-t-work-on-windows

阅读全文
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 班里选的班长成绩差怎么办 幼儿园班里孩子发生传染病怎么办 小仓鼠生了该怎么办 把老公生日忘了怎么办 老公说老婆脑子不好怎么办 和上司暧昧被同事发现怎么办 减肥不吃晚餐饿了怎么办 小孩晚饭吃多了怎么办 减肥晚上不吃饭饿了怎么办 两个人在一起性格不合怎么办 赌在你身上输了怎么办 苹果7lcould满了怎么办 e招贷不用了怎么办 牙活动了怎么办还疼 30岁掉了一颗牙怎么办? 在淘宝上交话费交错了怎么办 演出队在小区旁边扰民怎么办 雷雨天加了油怎么办 戴ok镜眼睛重影怎么办 乌龟背上长白色的花纹怎么办? 全自动洗衣机里面掉个硬币怎么办 跆拳道课上孩子乱动说话怎么办? 孩子不愿意上跆拳道课了怎么办 车座位里面倒了汤怎么办 腿被棍子打肿了怎么办 刚买的手机碎屏怎么办 被木棍么么打到头项怎么办 大王卡用到40g怎么办 王卡40g用完了怎么办 父亲把母亲打成重伤怎么办 狗狗脖子摔歪了怎么办 吃鸡游戏中重伤怎么办 吃鸡游戏摔伤了怎么办 现在没能力偿还网贷怎么办 上海找夜场工作被骗了怎么办? 买了烂尾的楼盘怎么办 孕七个月蛀牙疼怎么办 宝宝只吃一边奶怎么办 实房付了定金后悔了怎么办 开车时遇到意外事故时怎么办 没干过影楼门市怎么办