Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Qt: undo框架与QGraphicsScene的正确集成

Qt: undo框架与QGraphicsScene的正确集成
EN

Stack Overflow用户
提问于 2013-01-31 16:57:25
回答 1查看 1.1K关注 0票数 6

我正在写一个Qt应用程序,它基于QGraphicsScene画布,上面有可移动的形状,我试图集成撤消-重做功能。对于像创建和删除形状这样的大多数功能,在QGraphicsScene本身上实现是相当琐碎的,但我希望元素是可移动的,并且移动是可撤消的。现在,我在场景中使用橡皮筋拖动模式,并在项目上使用ItemIsSelectableItemIsMovable标志。问题是似乎没有合适的地方来创建表示形状移动的QUndoCommand。如果我在QGraphicsScene::itemChange方法中这样做,那么选择并移动两个或多个形状会导致不同对象的单独撤消命令交错,因此无法合并,因此撤消会导致意外的行为。在我可以看到的QGraphicsScene中,当它的项被移动时,没有事件被调用,所以我有点卡住了。

我看到的最糟糕的情况是,我禁用了自定义QGraphicsItem对象上的ItemIsMovable标志,并完全在QGraphicsScene鼠标事件中处理移动,但重新正确地实现该功能似乎相当复杂(我在内部检查了Qt是如何做到这一点的,并且有相当多的代码用于处理复杂的情况,例如对象及其一些子对象都被选中的情况)。这似乎是undo堆栈最明显的用例(以至于undo框架的示例程序与我的QGraphicsScene程序非常相似,只是不支持多对象移动),所以如果不重新实现核心功能的重要部分,就没有内置的方法来完成它,这似乎很奇怪。有没有人有这样做的程序的见解或例子?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-31 20:14:47

我想我解决这个问题有点笨拙。我向自定义形状添加了一个preMovePoint属性,在QGraphicsScenemousePressedEvent中,我将每个选定形状的preMovePoint设置为其各自的当前位置,在mouseReleaseEvent中,创建了一个从preMovePoint到每个形状的当前pos的复合移动命令。我仍然有兴趣知道是否有更好的方法。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14631098

复制
相关文章
解决eclipse中egit中的cannot open git-upload-pack问题
  今天在使用eclipse的egit插件进行检出远程代码到本地时,出现了cannot open git-upload-pack错误,后经过努力解决该问题,记录下方便回顾和交流!
阿豪聊干货
2018/08/09
1.4K0
解决eclipse中egit中的cannot open git-upload-pack问题
eclipse中Git的使用
Eclipse从LUNA版本开始默认支持了GIT客户端,可以在导航菜单中windows --> preferences搜索git查看git相关配置。 Eclipse中对于git的操作基本都在右键菜单Team中。
全栈程序员站长
2022/08/04
2K0
eclipse中Git的使用
MyEclipse安装EGIT插件
下载Eclipse的git插件——EGit。访问EGit的下载页面 http://www.eclipse.org/egit/download/ 即可。 官网下载太卡   可以到这里下载;http://download.csdn.net/detail/u010634066/8435599 安装插件:把上一步下载的插件解压出来,删掉XML文件。在MyEclipse的dropins目录下新建一个egit文件夹,然后把刚才解压的features、plugins和另外两个jar包全放进去。重启MyEclipse后,进
石臻臻的杂货铺[同名公众号]
2021/07/14
3200
版本控制器——Egit使用方法
什么是Git Gitv是目前世界上最先进的分布式版本控制系统。   那我们为什么需要学习Git呢?因为在我们传统的java自学中,所有的项目都是自己独立开发完成,而且项目基本都是小型项目,在优化和体验
生活创客
2018/01/30
1.3K0
版本控制器——Egit使用方法
Best Graphical Git Clients and Git Repository Viewers for Linux
Git is a free and open source distributed version control system for software development and several other version control tasks. It is designed to cope with everything from small to very large projects based on speed, efficiency and data integrity.
shaonbean
2019/05/26
8480
eReviewBoard简要介绍及安装 原
eReviewBoard 是基于Mylvy的与Eclipse集成的Reviewboard插件。
donghui
2019/04/19
8710
eReviewBoard简要介绍及安装
                                                                            原
让Eclipse起飞——这些插件不可不知
Eclipse是很多Java开发者的第一个开发工具,尽管开源的Eclipse在一后起之秀的对比下,显得有些颓势,但是,Eclipse有着丰富的插件支持。选择合适的插件,Eclipse表示:老夫也能飞。
三分恶
2020/12/03
1.9K0
让Eclipse起飞——这些插件不可不知
11 个 Linux 上最佳的图形化 Git 客户端
GitKraken:面向Linux的Git客户软件 主页链接:https://www.gitkraken.com/ 2. Git-cola Git-cola是一种功能强大、易于配置的Git客户软件,面向Linux,它为用户提供了一种漂亮的GUI。它是用Python编写的,采用GPL许可证来发布。 Git-cola界面包括几个协作工具,它们可以根据用户需要来隐藏和重新排列。它还为用户提供了许多实用的键盘快捷键。 额外的功能特性包括如下:
shaonbean
2019/05/26
10.8K0
针对Java开发人员的十大基本Eclipse插件
毫无疑问,Eclipse是Java开发中最受欢迎的IDE之一,而使Eclipse如此出色的原因全归功于插件。有数百个Eclipse插件可用于执行各种任务并与其他基本工具集成,例如可从GitHub、SVN、CVS等下载代码的插件。
用户6543014
2020/02/21
1.3K0
eclipse新手使用教程_eclipse的使用方法
Eclipse 是Java的集成开发环境,使用Eclipse编写Java代码更加简单和智能,那我们该如何使用Eclipse编写一个Java程序呢?
全栈程序员站长
2022/08/03
1.5K0
eclipse新手使用教程_eclipse的使用方法
利用Eclipse自带的插件连接GIT的详解
第一次与团队合作开发项目,首先就是学习使用git或者svn。 本来自己使用git提交代码到github也有一段时间了,但是发现团队另外2人都是用命令行,哈哈,很明显,自己水平就显得差了很多。偷偷的说下,自己以前都是用图形化软件。 建议大家,平时自己用的时候尽量使用命令行,而不要依赖图形界面。
谙忆
2021/01/21
6840
利用Eclipse自带的插件连接GIT的详解
eclipse 的基本使用
基本使用 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 A: 选择一个工作空间 D:\develop\eclipse-SDK-3.7.2-win64\workspace B: 如何写一个 HelloWorld 案例(代码以项目为基本单位) a: 创建项目(工程) *File -- New -- Java Project *在左边空白处,直接右键 -- New -- Java Project 键入项目名
Cell
2022/02/25
3120
10个Eclipse珍藏插件推荐
1、Open Explorer 打开资源管理器插件,这是一个从Eclipse里面可以直接定位打开windows资源管理器文件的插件,这个版本的插件在最新的Eclipse版本中都能使用。 下载地址:https://github.com/samsonw/OpenExplorer/downloads 2、JadClipse 反编译插件,能反编译Jar包中的class文件。 下载地址:https://sourceforge.net/projects/jadclipse/ 3、Subclipse Eclipse集
Java技术栈
2018/03/30
1.1K0
10个Eclipse珍藏插件推荐
Eclipse 3.7(代号Indigo)正式版发布
遵循Eclipse的年度发布惯例,Eclipse 3.7(代号Indigo)正式版发布了。
魏杰
2022/12/23
5780
虚拟化平台cloudstack(6)——使用maven:jetty调试
调试环境 ubuntu 12.04 JDK1.7 apache-maven-3.10 eclipse 4.2 Juno mysql 5 apache ant JDK的配置和安装 安装可以参考: http://my.oschina.net/jamesju/blog/94916 我是安装在~//java/jdk1.7.0_21下,执行java -version可以看到当前的JDK版本。 Maven的配置和安装 安装可以参考: http://blog.csdn.net/sin90lzc/article/detai
cloudskyme
2018/03/20
1.2K0
虚拟化平台cloudstack(6)——使用maven:jetty调试
eclipse导入import git项目
为模拟真实环境,wanzi要和mark共同开发。为模拟wanzi,换一台新机器,新装一个git,新建一个用户名和email。
马克java社区
2019/08/28
1.8K0
eclipse导入import git项目
git的使用
选择好语言,开源许可证随便选一个即可,模板我们最好设置一个Readme文件,方便后面写明仓库的介绍。 分支模型我们新手选一个单分支模型就可以了。 因为仓库创建的时候只能选择私有,我们如果要设置开源还需要创建好之后去设置。
青衫哥
2023/03/31
2520
git的使用
Eclipse的安装与使用
相信大家在用记事本编译运行java程序的同时肯定心里有不少怨言吧,要是用这种工具编译一个复杂点的程序简直就有想死的心了,更不用说什么大的网站项目了。接下来阿Q就带领大家了解一个全新的编译工具Eclipse。
阿Q说代码
2021/05/13
7160
Eclipse的安装与使用
Git的使用
之后就会发现该目录下多了一个隐藏文件.git,这是git管理仓库用的,千万不要去动它
晚上没宵夜
2020/03/11
4190
点击加载更多

相似问题

Git: egit显示错误信息

20

使用EGit从git到eclipse克隆

22

EGit on Eclipse:如何使用git push --force?

30

了解Git和如何使用EGit (git eclipse插件)

31

从eclipse提交的部分git (egit)

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档