2011-02-26 209 views
3

那麼,我正在做一個Goto Line系統。但它似乎不起作用。它之前做過,但我認爲我打破了它。Qt Creator中的Gotoline

void ScriptWindow::gotoLine() 
{ 
    int line = QInputDialog::getInteger(myEdit, "Line Number","To what line do you want to go?", 1, 1, myEdit->document()->lineCount()); 
    QTextCursor cursor = myEdit->textCursor(); 
    myEdit->setTextCursor(cursor); 
    cursor.setPosition(QTextCursor::Start, QTextCursor::MoveAnchor); 
    while(cursor.position() == QTextCursor::Start) { 
     cursor.setPosition(line - 1, QTextCursor::MoveAnchor); 
    }  
} 

能否請你告訴我,我究竟做錯了什麼?

回答

5

將光標位置設置爲零,按行數向下移動,並設置myEdit的文本光標。

QTextCursor cursor = myEdit->textCursor(); 
cursor.setPosition(0); 
cursor.movePosition(QTextCursor::Down, QTextCursor::MoveAnchor, line-1); 
myEdit->setTextCursor(cursor); 

另外,發現通過另外,QTextDocument的位置,然後就設定的位置。

int pos = myEdit->document()->findBlockByLineNumber(line-1).position(); 
QTextCursor cursor = myEdit->textCursor(); 
cursor.setPosition(pos); 
myEdit->setTextCursor(cursor); 
+0

當我去排隊5它只是到線路2。O_O – Kazuma 2011-02-26 19:18:24

+0

我的第一溶液只是固定在光標被修改後的setTextCursor()調用必須是錯誤。光標位置也沒有正確設置。我已經用更完整的解決方案更新了我的答案。 – baysmith 2011-03-02 17:59:56