1. 首先:实现全屏很简单,只需添加相应的槽,在其中通过如下代码:
object->setWindowFlags(Qt::SubWindow);
object->showNormal();
即可轻易将object窗口全屏;
2.其次,我们可能想着通过点击某个按键退出全屏,然后重写了个pressEvent()函数,可是我们发现,即使点击这个按键,然而这个函数并不能的到执行,究其原因,是因为OSG本身提供的有关于键盘按键处理时间,便先一步把事件截获,并的得到处理,所以我们在QT窗口中中想处理这个事件,就要通过安装过滤器来实现,并且安装过滤器是在QApplication对象上安装,这样无论任何事件都会先执行此过滤器,然后把相关代码写在此过滤器中就可以了,示例代码:
bool VideoFusionMainWin::eventFilter(QObject *target, QEvent *event)
{
if(event->type()==QEvent::KeyPress)
{
QKeyEvent* keyEvent = static_cast<QKeyEvent*>(event);
if(keyEvent->key() == Qt::Key_Escape)
{
object->setWindowFlags(Qt::SubWindow);
object->showNormal();
return true;
}
else
return false;
}
else
return false;
}