QT---父子窗体,过滤器问题

今天遇到一个小的问题,使用QT,通过点击鼠标,使一个窗口的全屏化,再次点击恢复。

没用过滤器之前出现了一个,全屏之后,无法恢复原来大小的BUG。

分析:鼠标点击触发之后,第一次使用可行,但将QWidget置于最上层,后续将无法触发。

过滤器代码:

头文件中的声明描述

	bool eventFilter(QObject *, QEvent *);  //事件过滤器

源文件中

bool MfcToQt::eventFilter(QObject *obj, QEvent *ev)
{
	if (obj == &mPlayWidget1 && ev->type() == QEvent::MouseButtonDblClick) /*鼠标进入标签*/
	{
		i++;
		if (i % 2 == 1)
		{
			mPlayWidget1.setWindowFlags(Qt::Window);
			mPlayWidget1.showFullScreen();
		}
		else
		{
			mPlayWidget1.setWindowFlags(Qt::SubWindow);
			mPlayWidget1.showNormal();
		}
	}
	return QWidget::eventFilter(obj, ev);
}

代码中 mPlayWidget1 是我用来播放的控件,页面中的控件想要全屏,需要先setWindowFlags(QT::Window)

同样,恢复也要使用一个setWindowFlags(QT::SubWindow)

变量i 是一个笨办法,多余设置了一个全局变量,用于记录判断是不是全屏。

最后在初始函数中,给控件添加标签

mPlayWidget1.installEventFilter(this);  

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值