QT:A画面调用B画面

3 篇文章 0 订阅

今天,研究了下,QT中是怎么实现主窗口调用子窗口的。

其实就是用信号与槽机制。你想通过MENU调用子窗口就用QACTION绑定个槽调用;想通过按钮点击弹出窗口那就绑定信号click与你的自定义槽来实现调用。但是但是!不能直接声明对象,只能用指针对象。比如

test t;
t.show();

t = new test(NULL); // t为指针对象,已经在.h中声名
t->show();

前者不行。会出现当槽函数生命周期到了,即槽函数走完了,调用出来的子窗口也关了,这显然不是咱们的目的!

在调用的过程中我一开始还在构造指针的时候传了一个this。这个问题需要好好记录一下!即写成如下代码:

t = new test(this); // t为指针对象,已经在.h中声名
t->show();

这样做会让QT认为你想把当前窗口认为是你将要调用出来的窗口的父窗口。通俗点说就是A调用B,A是父窗口,B是子窗口。

这样QT就会做一些特殊处理!比如子窗口会镶嵌在父窗口中,并且变成无边框,背景透明。再比如,如果父窗口hide,则子窗口的任务栏程序图标也消失。 所以如果你不想让窗口之间有这种关系千万不要写this!写this的效果:

 原本子窗口效果图

 主窗口调用后,可以看出来就剩下个listview和关闭按钮,边框没了,背景也透明了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值