QTextEdit удалить всю строку в заданной позиции

Мне нужно удалить определенную строку из QTextEdit (опция NoWrap активна) вручную из программы. Я нашел решение, которое объясняет, как удалить первую строку, но мне интересно, как я могу удалить всю строку с определенным индексом.

Я также нашел решение здесь удалить строку / блок из QTextEdit, но я не знаю, что это за блоки. Представляют ли они собой отдельные линии или нет? Должен ли я перебирать эти блоки, и если я достигну блока с заданным индексом, то удалить?

2 ответов


вы можете удалить строку в lineNumer С :

QTextCursor cursor = textEdit->textCursor();

cursor.movePosition(QTextCursor::Start);
cursor.movePosition(QTextCursor::Down, QTextCursor::MoveAnchor, lineNumer);
cursor.select(QTextCursor::LineUnderCursor);
cursor.removeSelectedText();

textEdit->setTextCursor(cursor);

здесь вы ставите курсор в начало документа, вниз lineNumer times, выберите определенную строку и удалите ее.


вы можете сделать следующее:

QTextEdit te;
// Three lines in the text edit
te.setText("Line 1\nLine 2\nLine 3");

const int lineToDelete = 1; // To delete the second line.
QTextBlock b = te.document()->findBlockByLineNumber(lineToDelete);
if (b.isValid()) {
    QTextCursor cursor(b);
    cursor.select(QTextCursor::BlockUnderCursor);
    cursor.removeSelectedText();
}