如何获取实际可见光标的行号

比尔盖*_*尔盖子 4 user-interface qt

我可以通过使用获取光标所在的行QTextEdit.textCursor().blockNumber(),但是当一行换行为多行时,它无法返回实际的行号。

我怎样才能做到这一点?

Mar*_*k R 5

我不确定它会起作用,所以我写了一个快速测试应用程序(Qt 5.0.1)并且它有效,这里是它的一部分:

void MainWindow::on_plainTextEdit_cursorPositionChanged()
{
    QPlainTextEdit *edit = qobject_cast<QPlainTextEdit *>(sender());
    Q_ASSERT(edit);
    QTextCursor cursor = edit->textCursor();
    cursor.movePosition(QTextCursor::StartOfLine);

    int lines = 1;
    while(cursor.positionInBlock()>0) {
        cursor.movePosition(QTextCursor::Up);
        lines++;
    }
    QTextBlock block = cursor.block().previous();

    while(block.isValid()) {
        lines += block.lineCount();
        block = block.previous();
    }
    ui->label->setText(QString::number(lines));
}
Run Code Online (Sandbox Code Playgroud)