• 14757阅读
  • 5回复

[提问]【已解决】QPlainTextEdit如何指定位置以选中文字 [复制链接]

上一主题 下一主题
离线米尔利安
 

只看楼主 倒序阅读 楼主  发表于: 2011-03-07
— 本帖被 XChinux 从 Qt基础编程 移动到本区(2013-04-01) —
QT4里好像没有setSelection这个函数了。。。
如果我想指定某一行(自动换行而非回车换行)第X字符到第Y个字符被选中,应该如何设置?
如果我用鼠标选中了一段文字,又该如何返回其起始点和选择长度?
谢谢。
[ 此帖被米尔利安在2011-03-10 10:57重新编辑 ]
我们在天上的父,愿人都尊你的名为圣。
愿你的国降临。
愿你的旨意行在地上,如同行在天上。
离线米尔利安

只看该作者 1楼 发表于: 2011-03-10
edit->setReadonly(false);
edit->setFocus();
edit->moveCursor(QTextCursor::Start);
for(int i=0; i<X; ++i)
    edit->moveCursor(QTextCursor::NextCharacter);
for(int i=0; i<Y-X; ++i)
    edit->moveCursor(QTextCursor::NextCharacter, QTextCursor::KeepAnchor);
edit->setReadOnly(true);

没办法,在readonly状态下不知道该怎么弄。并且使用edit->TextCursor().setPosition也无效。
我们在天上的父,愿人都尊你的名为圣。
愿你的国降临。
愿你的旨意行在地上,如同行在天上。
离线coblan

只看该作者 2楼 发表于: 2011-03-11
Re:获取QT窗口句柄
    int n,X,Y;
    QTextEdit ed;
  ed.show();
ed.setText(".......................");
    QTextCursor cs=ed.textCursor();
    cs.movePosition(QTextCursor::Start);
    cs.movePosition(QTextCursor::Down,QTextCursor::MoveAnchor,n);
    cs.movePosition(QTextCursor::Right,QTextCursor::MoveAnchor,X);
    cs.movePosition(QTextCursor::Right,QTextCursor::KeepAnchor,Y-X);
    ed.setTextCursor(cs);
//-----最后才看到能编辑帖子,不好意思,下面两个回复 就没用,这里的代码应该能行吧。。

[ 此帖被coblan在2011-03-11 09:47重新编辑 ]
离线coblan

只看该作者 3楼 发表于: 2011-03-11
回 2楼(coblan) 的帖子
我 Left 写错了, 应该是right
最后再加一个句:  
ed.setTextCursor(cs);
离线coblan

只看该作者 4楼 发表于: 2011-03-11
还有,一定要先将 textedit .show() 出来,再获取 textCursor, 这样才是以 textedit显示的情况为行的参照。  
QTextEdit ed;
ed.show();
QTextCursor cs=ed.textCursor();
cs.movePosion()
...move操作..
ed.setTextCursor(cs);  // 最后一定要把 textedit的 textCursor设置为 操作过的 cursor,否则它的cursor不会改变的。
离线米尔利安

只看该作者 5楼 发表于: 2011-03-11
谢谢!确实可以用。
-->设置为操作过的cursor<-- 这个是关键!
多谢多谢 解决了很大的效率问题~
我们在天上的父,愿人都尊你的名为圣。
愿你的国降临。
愿你的旨意行在地上,如同行在天上。
快速回复
限100 字节
 
上一个 下一个