C++ 如何确定用户类型时从QTextDocument中删除的内容?

C++ 如何确定用户类型时从QTextDocument中删除的内容?,c++,qt,user-interface,qt5,C++,Qt,User Interface,Qt5,我的应用程序中有一个必须为每一行维护的映射。 当用户删除一行时,我尝试检测哪一行,以便更新映射 contentsChange信号包含文档中发生更改的位置以及添加或删除的字符数,但现在确定删除之前的内容为时已晚 到目前为止,我一直在考虑尝试: 如果我看一下撤销堆栈,也许我可以看到被删除的行,但这对于大型更改块可能不可靠 我可以为每次更改保留文件的先前状态,然后在发出信号时尝试查看,但这似乎有很多不必要的开销 我可以在删除某些内容之前尝试深入源代码并创建一个新信号,但由于我使用LGPL,因此我必须构

我的应用程序中有一个必须为每一行维护的映射。 当用户删除一行时,我尝试检测哪一行,以便更新映射

contentsChange信号包含文档中发生更改的位置以及添加或删除的字符数,但现在确定删除之前的内容为时已晚

到目前为止,我一直在考虑尝试:

  • 如果我看一下撤销堆栈,也许我可以看到被删除的行,但这对于大型更改块可能不可靠
  • 我可以为每次更改保留文件的先前状态,然后在发出信号时尝试查看,但这似乎有很多不必要的开销
  • 我可以在删除某些内容之前尝试深入源代码并创建一个新信号,但由于我使用LGPL,因此我必须构建代码并发布此修改
  • 我可以在每个块的userState中放置连续值,如果触发contentsChanged时,我检测到发生更改的前一个块和下一个块之间的连续值存在差距,我可以推断删除的块。这里的缺点是,在检测到更改后,我必须更新所有剩余的块,以恢复连续的值
  • 最优雅(最简单、最便宜)的方法是什么

    <>我用Qt5.2.1用C++。< /P> 编辑: 我正在尝试对我的应用程序进行重大的重新设计,将更多的自定义信息直接放在块中的用户状态中(每行,因为我没有换行符)。如果我能通过这种方法,它将避免检测何时删除一行的问题,但这个问题仍然是一个有趣的问题,我认为它仍然需要一个答案


    在其他GUI框架中,为撤消堆栈提供反馈的操作堆栈具有更改前回调和更改后回调。我认为更改前的回调是这里缺少的。还是有更好的方法我不知道???

    一旦bruteforce是everyline的容器,这样的行,一旦删除就删除。Laszlo,我不确定我是否理解。我猜你是想说:“一个蛮力的想法是:为每一行创建一个容器,当该行被删除时,容器将被删除,你可以检测到。”这就是你的意思吗?