首页 > 其他分享 >Qt - 将窗体变为顶层窗体

Qt - 将窗体变为顶层窗体

时间:2024-10-11 11:43:49浏览次数:10  
标签:顶层 窗口 Qt CWidget 应用程序 窗体

1、将窗体变为顶层窗体(activateWindow(); 和 raise() )

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

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

void Widget::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,以保证窗体大小和位置改变后能时刻记住其位置。

void CWidget::resizeEvent(QResizeEvent*event)
{
    curGemRect = geometry();
}

void CWidget::moveEvent(QMoveEvent *event)
{
    curGemRect = geometry();
}

 补充一个判断窗口是不是活动窗口的函数:

if (!isActiveWindow()) //判断是否是活动窗口
{
    //......
}

 

标签:顶层,窗口,Qt,CWidget,应用程序,窗体
From: https://www.cnblogs.com/zhuchunlin/p/18458088

相关文章

  • 基于YOLO11/v10/v8/v5深度学习的安检X光危险品检测与识别系统设计与实现【python源码+
    《博主简介》小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。✌更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~......
  • Qt - 在父窗口中创建子窗口需要注意的事项
    Qt在父窗口中创建子窗口需要注意的事项: 一、QWidget1、《在QWidget下创建同类型的子窗口》指定了父对象:w=newWidgetSon(this)窗口就不是独立的,会嵌入到父窗口里。窗口一起显示。而且显示子窗口可以不用调用显示窗口函数,不调用的话也可以显示子窗口。不指定父对象:w=ne......
  • 如何用PyQt5创建多个窗口,同时获取多个U盘内的文件的名称,并分别在对应窗口打印文件名,要
    在PyQt5中,你可以使用QThread创建多个线程来并行处理每个U盘的文件名获取任务。每个线程负责扫描一个U盘的文件,同时在主窗口显示结果。以下是一个示例代码,用来创建多个窗口,同时在每个窗口中显示各自的U盘文件名:每个窗口使用QWidget。使用QThread创建后台线程获取U......
  • 【Qt】QStandardItem和QStandardItemModle以及QModelIndex的关系
    在Qt框架中,QStandardItem、QStandardItemModel和QModelIndex是用来处理表格和数据视图的关键类。以下是它们之间的关系和用途:QStandardItemQStandardItem是QStandardItemModel中用来表示单个项的类。它可以包含数据(如文本、图标、复选框状态等)和子项(用于树结构)。QSt......
  • 使用Qt Creator创建项目
    个人主页:C++忠实粉丝欢迎点赞......
  • Qt 4 下载地址(附安装教程)
    Qt4下载地址(附安装教程)获取Qt4现在去Qt官网下载老版本的Qt,会提示DownloadfromyourIPaddressisnotallowed.如果想要点进去下载,就要挂梯子。然而,在知道地址的情况下,可以不挂梯子,直接把链接丢到迅雷里面就可以下载了。这对Qt4和5都适用:可以根据下载地址的规律......
  • 【linux开发-Qt】-信号与槽机制
    一、什么是信号与槽机制信号(signal),就是在特定情况下被发射的事件,例如PushButton最常见的信号就是鼠标单击时发射的clicked()信号。槽(Slot)就是对信号响应的函数。槽就是一个函数,与一般的C++函数是一样的,可以定义在类的任何部分(public、private或protected),可以具有任......
  • Qt - 去掉自带的ui成员
    AdvertisingDialog.h#pragmaonce#include<QDialog>#include"ui_AdvertisingDialog.h"#include"Controller.h"classAdvertisingDialog:publicQDialog,publicUi_AdvertisingDialog{ Q_OBJECTpublic: AdvertisingDialog(Contro......
  • Qt知识点笔记
    C++高级概念详解一、智能指针1.概述智能指针是C++中用于自动管理内存的工具,它能够确保在适当的时候自动释放内存,防止内存泄漏。2.类型比较2.1原始指针classMyClass{public:MyClass(){std::cout<<"Constructorcalled\n";}~MyClass(){std::cout<<"D......
  • Qt/C++加载不同的地图控件/地图类型/缩放标尺/缩略图/比例尺/实时路况/全景视图等
    一、前言说明在展示地图的时候,有些常规的操作,比如调整地图的缩放级别,切换到卫星图等,希望能够在地图上直接操作实现,于是就有了一堆地图控件,可以根据自己的需求动态的添加和删除,这样就更直接更快捷,而不是通过函数去设置。几乎每个地图厂家都提供了类似的控件,尽管命名可能有些差别,常......