QTextEdit
le permitirá añadir sus contenidos a través de un QString
:
QTextEdit myEdit("the fish are coming");
también permite el uso de un QTextDocument
, que tiene bloques de texto. El QTextDocument
en sí también puede aceptar una QString
:
QTextEdit myEdit;
QTextDocument* myDocument = new QTextDocument("the fish are coming", &myEdit);
myEdit.setDocument(myDocument);
Sin embargo, "Si es necesario crear un nuevo bloque de texto o modificar el contenido de un documento mientras se examina su contenido, utilizar la interfaz basada en cursor proporcionada por QTextCursor
en su lugar ". (Qt documentation) (Nota, he añadido las líneas QTextBlockFormat
hacerlo explícito donde los bloques son.)
QTextEdit myEdit;
QTextDocument* myDocument = new QTextDocument(&myEdit);
myEdit.setDocument(myDocument);
QTextCursor* myCursor = new QTextCursor(myDocument);
QTextBlockFormat format;
format.setBackground(Qt::red);
myCursor->setBlockFormat(format);
myCursor->insertText("the ");
format.setBackground(Qt::green);
myCursor->insertBlock(format);
myCursor->insertText("fish ");
format.setBackground(Qt::yellow);
myCursor->insertBlock(format);
myCursor->insertText("are ");
format.setBackground(Qt::red);
myCursor->insertBlock(format);
myCursor->insertText("coming!");
format.setBackground(Qt::green);
myCursor->insertBlock(format);
myCursor->insertText(QString(%1 blocks").arg(myDocument->blockCount()));
myEdit.show();
parece un gran esfuerzo para ir a través de mí. ¿Puede darnos información adicional sobre por qué cree que necesita usar QTextBlock
s?
Estoy escribiendo un programa para ayudar a las personas a leer otro idioma (griego) y cada palabra tiene información gramatical diferente (como "Verbo, Indicativo, Activo, Tercera Persona, Singular") que me gustaría mostrar cuando el mouse se mueve sobre cada palabra. – jcuenod
Ah, eso tiene más sentido entonces. Un problema con mi ejemplo es que cada bloque se muestra como su propia línea. No tengo suficiente experiencia con 'QTextBlock's para saber cómo ponerlos en la misma línea. ¡Buena suerte! – Bill