Готолин в Qt Creator - PullRequest
       19

Готолин в Qt Creator

3 голосов
/ 26 февраля 2011

Ну, я делаю систему Goto Line.Но, похоже, это не работает.Это было раньше, но я думаю, что сломал его.

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

Не могли бы вы сказать мне, что я делаю неправильно?

1 Ответ

5 голосов
/ 26 февраля 2011

Установите позицию курсора в ноль, переместитесь вниз на количество строк и установите текстовый курсор 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);
...