QT Widget:子窗口显示在主窗口之外的问题

在Qt项目开发中,遇到子窗体需要显示在主窗口外部的需求,但Qt默认不支持。通过设置Qt::ToolTip属性,可使子窗体显示在最上层,但无法隐藏。为解决这一问题,需要自定义事件处理,使得子窗体能正确显示。文中提供了相关源码示例,并提示若需初始化时显示子窗体,需处理showEvent事件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有道云笔记持续更新:

文档:19.QWidget:子窗口显示在主窗口之外的...

链接:http://note.youdao.com/noteshare?id=6a3c0ae6c1df66d58ceadc20048d359b&sub=715B43B649EA4BD69BBC543D20351D5A

 在项目开发中,我们可能会需要子窗体显示在主窗体之外的需求,但是qt是不支持的。

我自己在网上没找到办法,所以就自己按照自己的思路来了弄了个demo

可以利用(Qt::ToolTip)来设置子窗体属性来解决这个问题,但是需要注意的是这个属性的意思是将窗体显示在最最最上层,也就是不能隐藏。但是也不是没用办法。

啥也别说了我们需要改写一些事件来让它不是显示在最最最上传,直接上源码,你们都应该看得懂,看不懂的应该都碰不到这个问题,哈哈哈。

class Widget : public QWidget

{

Q_OBJECT

public:

Widget(QWidget *parent = nullptr);

~Widget();

QPushButton *m_btn;

QWidget *m_subWidget;//子窗体

/*重写event事件,窗体失焦后自动隐藏*/

bool event(QEvent *event);

/*遍历主窗口或子窗口,判断是否被聚焦*/

bool isFocused();

private:

Ui::Widget *ui;

public slots:

void

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值