2012-03-31 14 views
11

Tôi có một hành động tạo QMessageBox. Trong hộp thoại đó, tôi muốn in một danh sách chứa một số mục. Tôi có mã sau:HTML trong 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>"); 

Tuy nhiên điều này không in danh sách, nhưng văn bản bằng thẻ html. Làm cách nào để in danh sách? Bất kỳ ý tưởng nào?

Trả lời

20

Không kết hợp dòng mới \n bằng thẻ html. Thay đổi các dòng mới thành <br> và sau đó định dạng văn bản được tự động nhận dạng.

+1

Đó là nó, cảm ơn – Jan

3

Dường như bạn đang đặt tiêu đề hộp thoại thay vì nội dung hộp thoại. Này làm việc cho tôi:

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

Định dạng văn bản mặc định cho QMessageBox là Qt :: AutoText mà nên phát hiện thẻ html bên trong chuỗi của bạn, vì vậy bạn sẽ có thể tiếp tục sử dụng phương pháp about tĩnh mà không cần phải khởi tạo một Đối tượng QMessageBox.

+0

Tôi nghĩ rằng đó chỉ là lỗi đánh máy mà OP đã quên bao gồm tiêu đề hộp thoại. Mã mà OP được đăng (không có tiêu đề) sẽ không biên dịch nhưng OP cho biết rằng nó in các thẻ HTML và không đề cập đến bất kỳ vấn đề biên dịch nào. Mã của bạn biên dịch tốt, nhưng không giải quyết được vấn đề thực tế là hộp thoại in các thẻ HTML giống như thay vì diễn giải HTML dưới dạng danh sách. Câu trả lời khác giải quyết vấn đề đó. –