qt设置窗口置顶_Qt保持窗口在最上方

在Qt开发中,根据需求可能需要实现窗口置顶,包括锁定弹出窗口和保持窗口在最顶层但不妨碍其他操作。本文介绍了QDialog和QWidget的区别,强调使用QDialog创建顶级对话框,并提供了具体代码示例,实现模态和非模态窗口置顶,以及全局置顶的两种方法。
摘要由CSDN通过智能技术生成

前言

在Qt开发桌面软件的过程中,根据开发的需求不同,我们经常需要将弹出窗口,一般常见的是需要是以下两种。

锁定弹出的窗口,阻塞其他窗口(包括主窗口)的操作,只有关闭当前窗口才能点击其他窗口或者主窗口

保持当前窗口一直显示在最顶层,但是不锁定(即同时可以操作其他窗口),同时也需要保证不影响其他程序

知识准备

首先我们需要了解一下 QMainWindow、QWidget、QDialog 的区别。

具体可以看以下链接,我只说下结论。

如果需要嵌入至其他窗体中,则基于 QWidget 创建;

如果是顶级对话框,则基于 QDialog 创建;

QDialog 又分为非模态对话框、模态对话框、半模态对话框

如果是主窗体,则基于 QMainWindow 创建

相信你看了上面的许多开发者就会知道自己的一个最基本的错误的:通过继承 QWidget 来创建弹出窗口,这个最基本的错误会导致你无法实现以上两点将窗口置顶以及其他不合理的Bug。

记住重要的一点,创建顶级(弹出)对话框,基于 QDialog 来创建。如果是弹出窗口基于 QWidget 来创建也没有关系,不需要重要修改太多,只需 setWindowflags(Qt::Dialog)。

具体操作

一、针对第一种锁定弹出窗口

1、如果窗口是基于QDialog创建。

topWindow.setParent(this);//指定父窗口,一般是目前将你弹出的窗口

topWindow.exec();//模态

2、如果窗口是基于QWidget创建(不建议这么做)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值