Gotoline in Qt Creator

Well, I'm making a Goto line system. But that doesn't seem to work. It was before, but I think I broke it.

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);
    }    
}

Could you tell me what I am doing wrong?

+3
source share
1 answer

Set the cursor position to zero, omit the number of lines and set the text cursor myEdit.

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

Alternatively, find the position through a QTextDocument, and then just set the position.

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

Source: https://habr.com/ru/post/1794943/


All Articles