Domanda

Sono completamente nuovo per C ++ e Qt.

Voglio popolare un oggetto QTextEdit con QTextBlocks, come posso fare?

es Se ho la frase "i pesci stanno arrivando" come faccio a mettere ogni parola nella propria QTextBlock e aggiungere quel blocco a QTextEdit, oppure ho capito male come QTextBlock funziona realmente?

È stato utile?

Soluzione

QTextEdit vi permetterà di aggiungere i vostri contenuti tramite un QString:

QTextEdit myEdit("the fish are coming");

Permette inoltre di utilizzare un QTextDocument, che detiene blocchi di testo. Il QTextDocument stesso può anche accettare un QString:

QTextEdit myEdit;
QTextDocument* myDocument = new QTextDocument("the fish are coming", &myEdit);
myEdit.setDocument(myDocument);

Tuttavia, "Se hai bisogno di creare un nuovo blocco di testo o modificare il contenuto di un documento, mentre l'esame del suo contenuto, utilizzare l'interfaccia del cursore-based fornito da QTextCursor, invece." (documentazione Qt) (Nota, ho aggiunto le linee QTextBlockFormat per rendere più esplicita quando i blocchi sono.)

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

Mi sembra un grande sforzo per passare attraverso di me. Puoi dare ulteriori informazioni sul motivo per cui si sente è necessario utilizzare QTextBlocks?

Altri suggerimenti

Tenerli sulla stessa linea utilizzando insertText senza usare insertBlock mezzo.

Per esempio, quando ho provato

cursor.insertText("I will try ", textFormat);
cursor.insertText("this for you.", textFormat);

per voi, le parole tutto è apparso sulla stessa riga.

insertBlock inserisce un paragrafo.

Si dovrebbe controllare la documentazione qui

È possibile assegnare la stringa a un QString e quindi aggiungere che al QTextEdit, o si potrebbe analizzare la QString utilizzando la sezione () vedi qui

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top