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

要达到激活,这个必须要满足两个条件,第一,必须要有通知激活的人,这个人必须是另一个应用程序(或同一应用程序的不同示例),他能发送信息给该窗体;第二,该窗体能够解析出该消息。至于一个应用程序如何向另一个应用程序发送消息的方法有很多,如共享内存,网络的方式等等。这里就不做详述,好,闲话少说,我们进入正题,有了前面的两个条件,假设现在该窗体所在的应用程序解析到了另一个应用程序的通知激活消息,那麽该窗体怎么将其激活为桌面的顶层窗体呢?

  1. void CWidget::activateWindow()
  2. {
  3. Qt::WindowStates winStatus = Qt::WindowNoState;
  4. if (windowState() & Qt::WindowMaximized)
  5. {
  6. winStatus = Qt::WindowMaximized;
  7. }
  8. setWindowState(Qt::WindowMinimized);
  9. setWindowState(Qt::WindowActive | winStatus);
  10. setGeometry(curGemRect);
  11. activateWindow();
  12. raise();
  13. }

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

  1. voidCWidget::resizeEvent(QResizeEvent*event)
  2. {
  3. curGemRect = geometry();
  4. }
  5. void CWidget::moveEvent(QMoveEvent *event)
  6. {
  7. curGemRect = geometry();
  8. }

http://blog.csdn.net/rabinsong/article/details/8660783

Qt将窗体变为顶层窗体(activateWindow(); 和 raise() )的更多相关文章

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

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

  2. Qt将窗体变为顶层窗体

    //重载resizeEvent和moveEvent两个函数,以保证窗体大小和位置改变后能时刻记住其位置 QRect curGemRect = mpWindow->geometry(); //激活 ...

  3. python使用tkinter无法给顶层窗体的输入框设定默认值

    这几天某同学遇到了一个棘手的问题,困扰了很久.今天终于解决了,我来记录一下坑. 情景:python 使用tkinter为第二层窗体(顶层窗体)中的一个输入框设定默认值时,总是无法设置,而且对输入框获取 ...

  4. Qt 子窗体嵌入父窗体

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

  5. Qt无边框窗体-模拟模态窗体抖动效果

    目录 一.概述 二.效果展示 三.功能实现 四.相关文章 原文链接:Qt无边框窗体-模拟模态窗体抖动效果 一.概述 用Qt开发windows客户端界面确实是一大利器,兼顾性能的同时,速度相对来说也不错 ...

  6. Qt — 子窗体操作父窗体中的方法

    父窗体与子窗体各自的代码如下: 1.  父窗体的代码: void FartherWindow::addactions() { SubWindow subwindow(this); // 把父窗体本身t ...

  7. winform 移动窗体,和窗体阴影(引用)

    无边框窗体移动://窗体移动API [DllImport("user32.dll")] public static extern bool ReleaseCapture(); [D ...

  8. 浅析c#中登录窗体和欢迎窗体关闭的问题

    第一次在cnbogs发文章,这次来个很基础的,主要给小白看. 在c#的winform编程中,我们经常会做登录窗体或欢迎窗体,并把他们作为启动窗体. 但是,我们有可能会遇到一些问题. 请看下面的代码: ...

  9. winform里操作打开在panel里的form窗体,子窗体操作同级子窗体或者父窗体的方法

    最近开始了一个winform项目,原先一直都是web项目.遇到个问题,就是在框架内,左侧和中间的main都是用panel来实现的form,就是把form窗体打开到panel里,实现左侧是导航,中间是操 ...

随机推荐

  1. 集合的实现 -- 数据结构与算法的javascript描述 第九章

    集合 集合(set)是一种包含不同元素的数据结构. 集合中的元素称为成员. 集合的两个最重要特性是:首先,集合中的成员是无序的:其次,集合中不允许相同成员存在. code function Set() ...

  2. SPDY HTTP2.0

    SPDY(读作“SPeeDY”)是Google开发的基于TCP的应用层协议,用以最小化网络延迟,提升网络速度,优化用户的网络使用体验.SPDY并不是一种用于替代HTTP的协议,而是对HTTP协议的增强 ...

  3. Android应用如何开机自启动、自启动失败原因

    本文主要介绍Android应用如何开机自启动.自启动失败的原因.adb命令发送BOOT_COMPLETED.问题:应用程序是否可以在安装后自启动,没有ui的纯service应用如何启动?答案马上揭晓^ ...

  4. springmvc的ModelAndView的简单使用

    参考:http://blog.csdn.net/zzjjiandan/article/details/34089313 先上图: MAVTest.java package com.wyl; impor ...

  5. CSS文本

    CSS文字及文本 导航:1.文字及文本2.例子 1.文字及文本文字: 单个字符文本: 多个字符的组合体 2.例子2.1.文字的颜色颜色属性被用来设置文字的颜色格式: color:色值颜色是通过CSS最 ...

  6. postman下载和安装

    插件下载地址:http://download.csdn.net/download/zhanghaofor/8244137 下载后解压缩,里面有安装方法 1.找到后缀为crx的文件,将后缀改成rar并解 ...

  7. python 利用位移法将ip转为number以及将number转为ip

    简介: 使用位移法将ip转为number型以及将number型转为ip,使用语言为python2.7 #!/usr/bin/env python # coding:utf-8 def ip2num(i ...

  8. MYSQL alter procedure alter function 它们只可以更改过程的特性,不可以更改过程的逻辑。

    例子: delimiter // create procedure proc_a(in numberA int) 这样create procedure 是正确的 begin select number ...

  9. JPEGOPTIM压缩优化

    有关JPEGOPTIM JPEGOPTIM是CDN供应商Akamai开发的一个图片人优化的开源小工具. 它有较好的图片压缩效果(压缩比.图片质量), 比PHP的GD库算法要好. 详细的介绍可以看这个文 ...

  10. 《windows程序设计》学习_3.2:左键的使用

    #include<windows.h> #include "resource.h" LRESULT CALLBACK WndProc (HWND, UINT, WPAR ...