【问题标题】:HTML in QMessageBoxQMessageBox 中的 HTML
【发布时间】:2012-04-14 21:32:06
【问题描述】:

我有一个创建 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>");

但是,这不会打印列表,而是带有 html 标记的文本。 如何打印列表? 有什么想法吗?

【问题讨论】:

    标签: c++ qt qmessagebox


    【解决方案1】:

    不要将换行符 \n 与 html 标记混用。将换行符更改为&lt;br&gt;,然后自动识别文本格式。

    【讨论】:

      【解决方案2】:

      您似乎在设置对话框标题而不是对话框内容。这对我有用:

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

      QMessageBox 的默认文本格式是 Qt::AutoText,它应该检测字符串中的 html 标签,因此您应该能够继续使用 about 静态方法,而无需实例化 QMessageBox 对象。

      【讨论】:

      • 我认为 OP 忘记包含对话框标题只是一个错字。 OP 发布的代码(没有标题)不会编译,但 OP 说它打印 HTML 标签并且没有提到任何编译问题。您的代码编译得很好,但不能解决实际问题,即对话框打印 HTML 标记,而不是将 HTML 解释为列表。另一个答案解决了这个问题。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-30
      • 2015-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多