2012-03-31 9 views
11

Ho un'azione che crea QMessageBox. In questa finestra di dialogo voglio stampare un elenco che contiene diversi elementi. Ho il seguente codice: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>"); 

Tuttavia, questo non stampa l'elenco, ma testo con tag html. Come posso stampare la lista? Qualche idea?

risposta

20

Non mescolare newline \n con tag html. Modificare le nuove righe in <br> e quindi il formato di testo viene automaticamente riconosciuto.

+1

Ecco, grazie – Jan

3

Sembra che si stia impostando il titolo della finestra di dialogo invece del contenuto della finestra di dialogo. Questo funziona per me:

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

Il formato di testo predefinito per QMessageBox è Qt :: glossario che dovrebbe rilevare tag HTML all'interno della vostra stringa, così si dovrebbe essere in grado di continuare a utilizzare il metodo statico about senza la necessità di creare un'istanza di un Oggetto QMessageBox.

+0

Penso che fosse solo un errore di battitura che l'OP ha dimenticato di includere il titolo della finestra di dialogo. Il codice che l'OP ha postato (senza il titolo) non verrebbe compilato ma l'OP dice che stampa i tag HTML e non menziona alcun problema nella compilazione. Il tuo codice si compila bene, ma non risolve il problema reale che è che la finestra di dialogo stampa i tag HTML proprio così invece di interpretare l'HTML come una lista. L'altra risposta risolve questo problema. –