热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

QGraphicsView-如何禁用鼠标和键盘滚动-QGraphicsView-howtodisablemouseandkeyboardscrolling

InmyapplicationIhaveQGraphicsScenewithpixmapaddedandallisviewedinQGraphicsViewwithsc



In my application I have QGraphicsScene with pixmap added and all is viewed in QGraphicsView with scrollbars off. The program window is smaller then pixmap and when I press arrow keys or move mouse wheel the pixmap is being moved.


在我的应用程序中,我添加了带有pixmap的QGraphicsScene,所有内容都在QGraphicsView中查看并关闭了滚动条。程序窗口比pixmap小,当我按箭头键或移动鼠标滚轮时,pixmap正在移动。


How do I disable that so even if the pixmap is bigger than window it won't be moved by keyboard or mouse unless I use my events for that?


如何禁用它,即使像素图大于窗口,它也不会被键盘或鼠标移动,除非我使用我的事件呢?


(I tried to set interactive property to false but that didn't work)


(我试图将交互式属性设置为false但不起作用)




3 个解决方案





#1






I believe the easiest solution would be to set FocusPolicy of QGraphicsView to NoFocus and then process all key events in main window.


我相信最简单的解决方案是将QGraphicsView的FocusPolicy设置为NoFocus,然后处理主窗口中的所有关键事件。


ui->graphicsView->setFocusPolicy( Qt::NoFocus );





#2







I think the easy way is to use QGraphicsView::setSceneRect() to set the area that the view is allowed to visualize.


我认为简单的方法是使用QGraphicsView :: setSceneRect()来设置允许视图可视化的区域。


If you set the view's sceneRect() to the actual size of the view widget (or just slightly smaller), then it won't be able to scroll or pan outside of this rectangle.


如果将视图的sceneRect()设置为视图窗口小部件的实际大小(或稍微小一点),则它将无法在此矩形外滚动或平移。






#3







I don't know if there's an easier way, but the moderately easy way would be to make a class that inherits your QGraphicsView class, and overrides the mouse and key press events.


我不知道是否有一种更简单的方法,但简单方便的方法是创建一个继承QGraphicsView类的类,并覆盖鼠标和按键事件。


The harder way would involve installing an event filter on the widget.


更难的方法是在小部件上安装事件过滤器。


In my opinion, the hardest brute-force solution would be to detect the change through some sort of signal, and set it back to how it was.


在我看来,最难的蛮力解决方案是通过某种信号检测变化,并将其设置回原样。







推荐阅读
  • 本文详细介绍了如何使用 Yii2 的 GridView 组件在列表页面实现数据的直接编辑功能。通过具体的代码示例和步骤,帮助开发者快速掌握这一实用技巧。 ... [详细]
  • 本章将深入探讨移动 UI 设计的核心原则,帮助开发者构建简洁、高效且用户友好的界面。通过学习设计规则和用户体验优化技巧,您将能够创建出既美观又实用的移动应用。 ... [详细]
  • RecyclerView初步学习(一)
    RecyclerView初步学习(一)ReCyclerView提供了一种插件式的编程模式,除了提供ViewHolder缓存模式,还可以自定义动画,分割符,布局样式,相比于传统的ListVi ... [详细]
  • 本文详细介绍了 org.apache.commons.io.IOCase 类中的 checkCompareTo() 方法,通过多个代码示例展示其在不同场景下的使用方法。 ... [详细]
  • 深入理解Tornado模板系统
    本文详细介绍了Tornado框架中模板系统的使用方法。Tornado自带的轻量级、高效且灵活的模板语言位于tornado.template模块,支持嵌入Python代码片段,帮助开发者快速构建动态网页。 ... [详细]
  • c# – UWP:BrightnessOverride StartOverride逻辑 ... [详细]
  • 本文详细介绍了如何使用Python编写爬虫程序,从豆瓣电影Top250页面抓取电影信息。文章涵盖了从基础的网页请求到处理反爬虫机制,再到多页数据抓取的全过程,并提供了完整的代码示例。 ... [详细]
  • 本文介绍了一款用于自动化部署 Linux 服务的 Bash 脚本。该脚本不仅涵盖了基本的文件复制和目录创建,还处理了系统服务的配置和启动,确保在多种 Linux 发行版上都能顺利运行。 ... [详细]
  • Android 渐变圆环加载控件实现
    本文介绍了如何在 Android 中创建一个自定义的渐变圆环加载控件,该控件已在多个知名应用中使用。我们将详细探讨其工作原理和实现方法。 ... [详细]
  • 从 .NET 转 Java 的自学之路:IO 流基础篇
    本文详细介绍了 Java 中的 IO 流,包括字节流和字符流的基本概念及其操作方式。探讨了如何处理不同类型的文件数据,并结合编码机制确保字符数据的正确读写。同时,文中还涵盖了装饰设计模式的应用,以及多种常见的 IO 操作实例。 ... [详细]
  • 本文介绍如何通过创建替代插入触发器,使对视图的插入操作能够正确更新相关的基本表。涉及的表包括:飞机(Aircraft)、员工(Employee)和认证(Certification)。 ... [详细]
  • 本文详细介绍了 com.facebook.drawee.view.SimpleDraweeView 中的 setScaleType 方法,提供了多个实际代码示例,并解释了其在不同场景下的应用。 ... [详细]
  • 基因组浏览器中的Wig格式解析
    本文详细介绍了Wiggle(Wig)格式及其在基因组浏览器中的应用,涵盖variableStep和fixedStep两种主要格式的特点、适用场景及具体使用方法。同时,还提供了关于数据值和自定义参数的补充信息。 ... [详细]
  • ASP.NET MVC中Area机制的实现与优化
    本文探讨了在ASP.NET MVC框架中,如何通过Area机制有效地组织和管理大规模应用程序的不同功能模块。通过合理的文件夹结构和命名规则,开发人员可以更高效地管理和扩展项目。 ... [详细]
  • 利用Selenium与ChromeDriver实现豆瓣网页全屏截图
    本文介绍了一种使用Selenium和ChromeDriver结合Python代码,轻松实现对豆瓣网站进行完整页面截图的方法。该方法不仅简单易行,而且解决了新版Selenium不再支持PhantomJS的问题。 ... [详细]
author-avatar
大爱小哇先森_991
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有