2012-03-31 9 views
11

Ich habe eine Aktion, die QMessageBox erstellen. In diesem Dialog möchte ich eine Liste drucken, die mehrere Einträge enthält. Ich habe folgenden Code:HTML in QMessageBox

void MainWindow::onAboutActivated(){ 
qDebug() << "about"; 
QMessageBox::about(this, 
        "Autor: \n" 
        "\n" 
        "Umoznuje:" 
        "<ul>" 
        "<li> Item 1 </li>" 
        "<li> Item 2 </li>" 
        "<li> Item 3 </li>" 
        "</ul>"); 

Allerdings druckt das nicht die Liste, sondern Text mit HTML-Tags. Wie kann ich die Liste drucken? Irgendwelche Ideen?

Antwort

20

Mischen Sie keine Zeilenumbrüche \n mit HTML-Tags. Ändern Sie die Zeilenumbrüche in <br> und dann wird das Textformat automatisch erkannt.

+1

Das war es, danke – Jan

3

Es scheint, dass Sie den Dialogtitel anstelle von Dialoginhalten einstellen. Dies funktioniert für mich:

void MainWindow::onAboutActivated(){ 
qDebug() << "about"; 
QMessageBox::about(this, "Dialog Title", 
        "Autor: \n" 
        "\n" 
        "Umoznuje:" 
        "<ul>" 
        "<li> Item 1 </li>" 
        "<li> Item 2 </li>" 
        "<li> Item 3 </li>" 
        "</ul>"); 

Das Standardtextformat für QMessageBox ist Qt :: Autotext, die HTML-Tags innerhalb der Zeichenfolge erkennen soll, so sollten Sie in der Lage sein, mit der about statischen Methode ohne die Notwendigkeit, weiterhin ein instanziiert QMessageBox-Objekt

+0

Ich denke, es war nur ein Tippfehler, dass das OP vergaß, den Dialogtitel aufzunehmen. Der Code, den das OP gepostet hat (ohne den Titel), würde nicht kompilieren, aber das OP sagt, dass es die HTML-Tags druckt und keine Probleme beim Kompilieren erwähnt. Ihr Code kompiliert gut, löst aber nicht das eigentliche Problem, dass das Dialogfeld die HTML-Tags einfach so ausgibt, anstatt den HTML-Code als Liste zu interpretieren. Die andere Antwort löst dieses Problem. –

Verwandte Themen