¿Cómo cambiar el formato de línea actual en QTextEdit sin selección?

¡allí! Quiero saber cómo cambiar el formato de línea actual en QTextEdit?

En el documento leí que

"El formato se puede aplicar al documento de texto actual utilizando las funciones setCharFormat (), mergeCharFormat (), setBlockFormat () y mergeBlockFormat (). Si el cursor no tiene selección, el formato de bloque actual se cambiará."

Pero en mi aplicación, el bloque actual en el que se encuentra el cursor no se pudo cambiar. ¿Me puedo perder algo? Entonces, ¿cómo podría cambiar el formato de bloque actual que no tiene selección?

Aquí está mi código:

QTextCursor cursor = this->textCursor();
QTextBlockFormat blockFmt;
blockFmt.setNonBreakableLines(true);
blockFmt.setPageBreakPolicy(QTextFormat::PageBreak_AlwaysBefore);
QTextCharFormat charFmt;
charFmt.setFont(data->visualFont());
if(!cursor.hasSelection()) {
    cursor.beginEditBlock();
    cursor.setBlockFormat(blockFmt);
    cursor.mergeBlockCharFormat(charFmt);
    QTextBlock block = cursor.block();
    block.setUserData(data);
    cursor.endEditBlock();
}

Lo que quiero hacer es: cambiar el formato de la línea actual si no hay una selección. Entonces, si cursor.hasSelection () es falso, solo combino un nuevo formato para bloquear caracteres. Pero esto no funciona

También intenté agregar setTextCorsor (cursor); después de cursor.endEditBlock () ;, pero aún no funciona. De hecho, después de agregar esto, todo el bloque se vuelve invisible.

Entonces, ¿cómo podría cambiar el formato de bloque actual que no tiene selección?

Respuestas a la pregunta(1)

Su respuesta a la pregunta