this means war->textEdit1->moveCursor(QTextCursor::Down,QTextCursor::MoveAnchor); this means war->textEdit1-&gt

Qt 实现文本编辑器的跳转到指定行的功能
核心提示:编辑器都有跳转到指定行的功能,然后我也写了一个,代码如下:intblocknumbers=textEdit-&document()-&blockCount();inttoLineNumber=QInputDialog::getInt(this...
好多文本编辑器都有跳转到指定行的功能,然后我也写了一个,代码如下:
int blocknumbers = textEdit-&document()-&blockCount(); int toLineNumber = QInputDialog::getInt(this,tr( 请输入行号 ),tr( 行号 ),0,0,blocknumbers,1,&ok); if (ok) {
QTextCursor tc = textEdit-&textCursor();
int toPost = textEdit-&document()-&findBlockByNumber( toLineNumber - 1).position();
tc.setPosition(toPost,QTextCursor::MoveAnchor);
textEdit-&setTextCursor(tc);
textEdit-&centerCursor();}首先得到文本中的所有行数blocknumbers。
然后用标准的输入对话框得到想要跳转到的行数。
在 if 语句里面,先得到一个 QTextCursor
然后再通过findBlockByNumber()函数得到想要跳转行的起始位置
tc.setPosition(toPost,QTextCursor::MoveAnchor);
把光标放到起始位置,然后把锚也移动过去。
最后把光标所在的行设置为文档的垂直中心就好了QTextCursor TextEdit中跳转到指定行的解决方案 - 为程序员服务
为程序员服务
TextEdit中跳转到指定行的解决方案
说明:首先,要得到 一个鼠标指针对象:QTextCursor tc = textCursor();然后利用QTextCursor的setPosition函数设置鼠标指针的位置。这里的position是指整个文件流的位置坐标,如何定位到行呢?以前也被这个问题困扰解决的办法是:利用QTextBlock这类。可以理解为块数据,因为文件中的Block是以换行符分割,所以可以看成是文件的一行。那么利用QTextDocument的findBlockByNumber 函数就可以得到你指定的行了,接下来用position函数得到这一行在文件流中的位置坐标最后,tc.setPosition,然后别忘了把鼠标设置为有效setTextCursor( tc );跳转到行就实现了。如果利用好QTextCursor 和QTextBlock这两个类,还可以实现很多文本编辑的功能。
void textEdit::gotoline( int line )
QTextCursor tc = textCursor();
int position = document()-&findBlockByNumber ( line-1 ).position();
tc.setPosition(position,QTextCursor::MoveAnchor);
setTextCursor( tc );
您可能的代码
相关聚客文章
荣誉:1435
相关专栏文章

我要回帖

更多关于 this means war 的文章

 

随机推荐