QTextEdit
pozwolisz dodać zawartość poprzez QString
:
QTextEdit myEdit("the fish are coming");
pozwala także użyć QTextDocument
, która posiada bloki tekstu. Sam QTextDocument
również może zaakceptować QString
:
QTextEdit myEdit;
QTextDocument* myDocument = new QTextDocument("the fish are coming", &myEdit);
myEdit.setDocument(myDocument);
Jednak „Jeśli chcesz utworzyć nowy blok tekstu lub zmodyfikować treść dokumentu badając jego zawartość, należy użyć interfejsu kursora na bazie dostarczonej przez QTextCursor
zamiast. " (Qt documentation) (Uwaga, dodałem QTextBlockFormat
linii, aby to jednoznacznie, gdzie bloki są.)
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();
Wydaje się to dużo wysiłku, aby przejść przez mnie. Czy możesz podać dodatkowe informacje na temat powodów, dla których uważasz, że musisz używać QTextBlock
s?
Piszę program, który pomoże ludziom czytać inny język (grecki) i każde słowo ma inną gramatyczną informację (np. "Czasownik, orientacyjny, aktywny, trzecia osoba, osobliwy"), który chciałbym wyświetlić, gdy mysz jest przesuwana nad każdym słowem. – jcuenod
Ach, to ma więcej sensu niż wtedy. Jednym z problemów z moim przykładem jest to, że każdy blok jest wyświetlany jako osobna linia. Nie mam wystarczającego doświadczenia z 'QTextBlock's, aby wiedzieć, jak uzyskać je na tej samej linii. Powodzenia! – Bill