QT将窗体变为顶层窗体

155 篇文章 25 订阅

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就行),curGemRectCWidget的成员变量,用来保存窗体的几何位置,这样就能记住窗体上一次弹出的位置,不过还要重载两个函数,resizeEventmoveEvent,以保证窗体大小和位置改变后能时刻记住其位置。

voidCWidget::resizeEvent(QResizeEvent*event)

{

    curGemRect = geometry();

}

 

void CWidget::moveEvent(QMoveEvent *event)

{

    curGemRect = geometry();

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值