2017-06-13 4 views
1

verwende Ich versuche, die Attribute einzelner Wörter wie Schriftart und Farbe zu ändern. QTextEdit ermöglicht es mir, den Text als HTML über setHtml(htmlText) zu setzen, nachdem QString als HTML eingestellt wurde, wird Tippen unordentlich. Ich kann weder Leerzeichen eingeben noch Enter drücken. Manchmal werden Wörter rückwärts geschrieben.Typisierung ist chaotisch, wenn ich html mit QTextEdit

void MainWindow::on_textEdit_textChanged() 
{ 
    QString plainText = ui->textEdit->toPlainText(); 
    QString htmlText = "<font color='red'>" + plainText + "</font>"; 

    disconnect(ui->textEdit, SIGNAL(textChanged()), this, SLOT(on_textEdit_textChanged())); 

    ui->textEdit->setHtml(htmlText); 
    QTextCursor cursor(ui->textEdit->textCursor()); 
    cursor.movePosition(QTextCursor::EndOfWord); 
    ui->textEdit->setTextCursor(cursor); 

    connect(ui->textEdit, SIGNAL(textChanged()), this, SLOT(on_textEdit_textChanged())); 
} 

Die Farbe ist richtig eingestellt, aber die Eingabe ist inkonsistent. Ich bin kein Experte in HTML. Irgendwelche Vorschläge.

Antwort

2

HTML ist eine Übertragungsrepräsentation für den Syntaxbaum des Dokuments. Sie müssen eine andere oder die andere ändern, sonst werden Sie die Auswirkungen von Interaktionen zwischen den beiden konfrontiert. Wähle einen aus und bleibe dabei.

Da Sie die Schnittstelle QTextDocument verwenden, sollten Sie alle Änderungen über diese Schnittstelle vornehmen. Es gibt keine Notwendigkeit, direkt mit HTML umzugehen. Um die Attribute eines Textabschnitts zu ändern, wählen Sie den Text aus und bearbeiten Sie ihn dann über die Cursor-API.