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