首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QTextCursor和beginEditBlock

QTextCursor和beginEditBlock
EN

Stack Overflow用户
提问于 2013-03-04 04:25:16
回答 1查看 1.1K关注 0票数 2

我在QPlainTextEdit中有一些文本,其中每行都以10个空格开头:

代码语言:javascript
复制
          line1
          line2
          line3
          line4

然后,我选择了几行,在一个循环中,我想从所有选定的行中删除前两个空格:

代码语言:javascript
复制
cursor.beginEditBlock();
for (QTextBlock block = startBlock; block != endBlock; block = block.next()) {
    cursor.setPosition(block.position());
    cursor.setPosition(block.position() + 2, QTextCursor::KeepAnchor);
    cursor.removeSelectedText();
}
cursor.endEditBlock();

问题是,上面的代码“损坏”了最后选择的行-就像它移除了某种行尾标记-当我想跳到最后一行的末尾时,光标移动到它下面的行,在第一个和第二个字符之间。即使在编辑后选择项也不能正确显示-所有行,但最后一行的选择指示器扩展到窗口右边缘,而最后一行的指示器仅与该行的宽度相同。

代码语言:javascript
复制
        line1    < 1. selected lines, run the code
        line2    <
        line3    <        < 2. here I jump to end of line
 |      line4

 ^ 3. cursor appears here

当我删除beginEditBlock()endEditBlock()时,一切正常。

有谁知道为什么会发生这种事吗?

EN

回答 1

Stack Overflow用户

发布于 2013-03-04 15:07:26

在这种情况下,block != endBlock你的光标永远不会到达最后一个区块。您应该使用以下命令:

代码语言:javascript
复制
QTextBlock block = document->firstBlock();
while (block.isValid())
{
    // do your stuff
    block = block.next();
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15190437

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档