• 5560阅读
  • 7回复

关于textedit查找替换中的全部替换后光标如何定位到原来的位置? [复制链接]

上一主题 下一主题
离线iiiyyyhhhsss
 

只看楼主 正序阅读 楼主  发表于: 2009-09-22
Find Next;Find Previous;Replace Next;Replace Previous;这四个功能我都实现了,在实现Replace All的时候,问题来了:

如何确保全部替换后,光标还在原来的位置?

由于全部替换后,文档发生改变了,光标通常被移动了,记录光标原来的position也变得不合适了。。
离线iiiyyyhhhsss

只看该作者 7楼 发表于: 2009-09-22
离线robertkun

只看该作者 6楼 发表于: 2009-09-22
做上着色效果应该会更好啊~
区分大小的问题,我想应该可以用这个解决
int x = QString::compare("aUtO", "AuTo", Qt::CaseInsensitive);  // x == 0

关注一下,帮你顶顶,
                                              简单的生活使人快乐!
离线iiiyyyhhhsss

只看该作者 5楼 发表于: 2009-09-22
你是说大小写不区分吗?我也没有添加这个功能,有待解决。。。

我现在比较想做一个着色的问题。。。不过有关的帖子很少。。
离线robertkun

只看该作者 4楼 发表于: 2009-09-22
好的,谢谢。iiiyyyhhhsss,不过我还有个小问题,
选中的文本和要替换的文本,内容一致,但有大小的区别是,不能区分,我想实现这个功能,
不知道你有没有想过这个问题?
                                              简单的生活使人快乐!
离线iiiyyyhhhsss

只看该作者 3楼 发表于: 2009-09-22
当然要恢复光标位置

如果是一个很大的文档,作一个Replace All之后,原来的光标位置不见了,要手工找回来很麻烦啊

我这是考虑到用户的心理来设计的
离线iiiyyyhhhsss

只看该作者 2楼 发表于: 2009-09-22
if (currentText->textCursor().selectedText()==this->comboBoxFind->lineEdit()->text())//当cursor选择内容与查找内容一致时,才进行替换
{currentText->textCursor().insertText(this->comboBoxReplace->lineEdit()->text());
this->HTextEditorFindNext();}
else
{this->HTextEditorFindNext();}//查找下一个

注:
currentText为要进行编辑的TextEdit
this->comboBoxFind->lineEdit()->text()为要被查找的内容
this->comboBoxReplace->lineEdit()->text()为用来替换的内容

这个是Replace Next的实现
[ 此帖被iiiyyyhhhsss在2009-09-22 15:28重新编辑 ]
离线robertkun

只看该作者 1楼 发表于: 2009-09-22
不知道楼主为什么要在替换完成后,恢复光标的位置?

最近也在做查找和替换的功能,能不能把替换部分的代码贴出来, 参考一下。谢谢~
                                              简单的生活使人快乐!
快速回复
限100 字节
 
上一个 下一个