QT将窗体变为顶层窗体

在windows上通过鼠标双击某应用程序图标,该应用程序往往会以顶层窗口的形式呈现在我们面前,但是对于一个已经打开的非顶层窗口,我们怎么将其激活为顶层窗口呢?

要达到激活,这个必须要满足两个条件:

  1. 有通知激活的人,这个人必须是另一个应用程序(或同一应用程序的不同示例),他能发送信息给该窗体;
  2. 该窗体能够解析出该消息。

至于一个应用程序如何向另一个应用程序发送消息的方法有很多,如共享内存,网络的方式等等。这里就不做详述。了前面的两个条件,假设现在该窗体所在的应用程序解析到了另一个应用程序的通知激活消息,那麽该窗体怎么将其激活为桌面的顶层窗体呢?

void CWidget::activateWindow()

{

Qt::WindowStates winStatus = Qt::WindowNoState;

if (windowState() & Qt::WindowMaximized)

{

winStatus = Qt::WindowMaximized;

}

setWindowState(Qt::WindowMinimized);

setWindowState(Qt::WindowActive | winStatus);

setGeometry(curGemRect);

activateWindow();

raise();

}

通过在窗体处理函数中调用上述函数,就可以将该窗体设为顶层窗体,其中,CWidget派生自QWidget(当然其他窗体也行,只要窗体的最终父类是QWidget就行),curGemRect是CWidget的成员变量,用来保存窗体的几何位置,这样就能记住窗体上一次弹出的位置,不过还要重载两个函数,resizeEvent和moveEvent,以保证窗体大小和位置改变后能时刻记住其位置。

voidCWidget::resizeEvent(QResizeEvent*event)

{

curGemRect = geometry();

}

void CWidget::moveEvent(QMoveEvent *event)

{

curGemRect = geometry();

}

QT将窗体变为顶层窗体相关推荐

  1. Qt QDialog将窗体变为顶层窗体(activateWindow(); 和 raise() )

    m_pLoginDlg->hide(); m_pLoginDlg->activateWindow(); //m_pLoginDlg->raise(); m_pLoginDlg-> ...

  2. qt鼠标进入窗体后,窗体自动置顶

    提要 鼠标进入窗体后,窗体自动置顶,鼠标移开窗体后,窗体恢复之前的状态. 示例 运行效果如下: 程序刚启动的效果如下: 鼠标放在某一个窗口上的效果如下: 可实现鼠标放在某一个窗口上该窗口置顶,且窗口的 ...

  3. Qt 子窗体嵌入父窗体

    1.创建个子窗体QDialog.在子窗体构造函数添加 Dialog::Dialog(QWidget *parent) :QDialog(parent),ui(new Ui::Dialog) {ui-& ...

  4. Qt学习笔记:自定义窗体的移动+控件图标

    在这里首先感谢刘大师的作品:Qt编写通用主界面导航(开源) 贴上演示: 本博客主要是研究了刘大师的作品然后自己总结,做点笔记..不喜勿喷~~~ 废话不多说,先贴出代码解析一下: AppInit::In ...

  5. 登陆窗体与主窗体的跳转 C# (转载自网络)

    登陆窗体与主窗体的跳转 C# 2011-08-30 19:53 在做winform登录窗体的时候,一开始不了解winform编程犯过一个小错误,把登录窗体在程序入口的时候做成了语法上的主窗体,导致了登 ...

  6. WinForm开发,窗体显示和窗体传值相关知识总结

    以前对WinForm窗体显示和窗体间传值了解不是很清楚 最近做了一些WinForm开发,把用到的相关知识整理如下 A.WinForm中窗体显示显示窗体可以有以下2种方法: Form.ShowDialo ...

  7. WinFrom子窗体向父窗体传值

    父窗框mainForm;子窗体childForm,利用事件进行传值 在子窗体中的操作: public event EventHandler accept;public string value; pr ...

  8. winform C#的委托事件在winform窗体中传值,也可用于刷新另一窗体(窗体A刷新窗体B)...

    窗体A :代码如下: public delegate void BrushPermission();//定义一个委托/// <summary>/// 刷新主界面的权限(功能按钮)/// & ...

  9. MFC获得主窗体和父窗体指针

    MFC编程中经常遇到子窗体向父窗体传递參数的情况,这就须要获得父窗体的指针. 例:主对话框CMyMainDlg通过buttonButtonA进入对话框CMyParentDlg.CMyParentDlg ...

最新文章

  1. Step by Step WebMatrix网站开发之二:使用WebMatrix(2)
  2. 使用前端框架Foundation 4来帮助简化响应式设计开发
  3. 不知是哪个家伙写的,相当的有才啊!
  4. iframe 页面富文本框数据怎么保存_文字太多PPT怎么做都丑?估计是没注意这些细节!...
  5. 【LeetCode】剑指 Offer 46. 把数字翻译成字符串
  6. 阿里云容器服务飞天敏捷版详解
  7. 投资赚钱发财, 财务自由,需要如下几个因素
  8. 实验一 Linux开发环境的配置 20145213祁玮 20145222黄亚奇
  9. 学习笔记:Oracle的trace文件可见性
  10. Python爬虫实例(含代码)超详细教程
  11. 2019奥斯卡谁是赢家 这里有一份来自AI的预测名单
  12. 哈哈,没有什么能阻止得了这届父母要卷的决心
  13. 会计科目(定义,分类)
  14. last_load_time和last_active_time的选择
  15. 阿里云Ubuntu 18.04安装图形界面
  16. 「需求广场」需求词更新明细(十二)
  17. 解决 command not found: brew :Mac安装Brew
  18. 计算机网络开发与管理专业就业前景,计算机网络与安全管理专业就业前景和就业方向分析...
  19. 基于javaweb的仿天猫商城系统开发与设计.rar(论文+任务书+项目源码)
  20. 【深度学习】网络训练的原理:什么是梯度下降?学习率的作用是什么?

热门文章

  1. Linux 命令(65)—— ld 命令
  2. CVTE 2017 秋季校招笔试题回忆(C++后台)
  3. oracle12 group by 拼接字符串
  4. [BZOJ4811][YNOI2017]由乃的OJ(树链剖分+线段树)
  5. 小程序外链跳转web-view系列问题
  6. [转]jQuery ListBox Plugin(ListBox插件)
  7. Webpack + vue + es6 安装
  8. Mount 挂载错误mount:block device /dev/sr0 is write – protected , mounting read-only
  9. 购物车catslider简单的多商品分类滑动
  10. 【体系结构】shared pool的个人理解