当前位置:   article > 正文

QT Labe中l实现双击全屏显示画面_qt中实现子控件在双击后全屏显示

qt中实现子控件在双击后全屏显示

上节总结了usb摄像头在label上的显示问题,今天我们想要实现的是在label控件上双击实现全屏的画面显示,再次双击退出全屏。

本次实现的基本原理是利用事件过滤器eventFilter。直接贴代码

首先需要在构造函数中为label安装事件过滤器

ui.u1->installEventFilter(this);

当然重写事件过滤器需要在头文件中声明,下面为重写的事件过滤器部分。

  1. bool QtGuiApplication7::eventFilter(QObject *obj, QEvent *event)
  2. {
  3. if (obj == ui.u1)//当事件发生在u1(为Qlabel型)控件上
  4. {
  5. if (event->type() == QEvent::MouseButtonPress)//当为双击事件时
  6. {
  7. i++;
  8. if (i % 2 == 0) //此处为双击一次全屏,再双击一次退出
  9. {
  10. ui.u1->setWindowFlags(Qt::Dialog);
  11. ui.u1->showFullScreen();//全屏显示
  12. }
  13. else
  14. {
  15. ui.u1->setWindowFlags(Qt::SubWindow);
  16. ui.u1->showNormal();//退出全屏
  17. };
  18. }
  19. return QObject::eventFilter(obj, event);
  20. }
  21. }

摄像头显示部分就不再贴出了,主要还是定时器的使用,下面放出两张结果图:

初始情况下:

在label中双击全屏显示

总结:当我们需要对某一个控件响应鼠标或者键盘事件的时候可以充分发挥事件过滤器的作用!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/95113
推荐阅读
相关标签
  

闽ICP备14008679号