【问题标题】:Apply a custom stylesheet to QTextDocument将自定义样式表应用于 QTextDocument
【发布时间】:2018-11-30 16:58:14
【问题描述】:

我想使用 setDefaultStyleSheet 函数将一些自定义样式表应用于 QTextDocument,但是它被忽略了。
根据this post我应该在设置html内容之后添加样式表,但这并没有解决我的问题。
我的代码:

QString *html = new QString();
*html = "<tr>" + name + "</tr>"
        "<tr>" + surname + "</tr>"
        "<tr>" + age + "</tr></table>";
QTextDocument doc;
doc.setHtml(*html);
doc.setDefaultStyleSheet("table { border: 1px solid black; }"); // This should apply the style sheet

【问题讨论】:

    标签: c++ qt


    【解决方案1】:

    这里的问题是table 属性border(不要与CSS 简写混淆)必须设置为大于或等于1 的值,否则不会显示边框。考虑这段代码:

    QString *html = new QString();
    *html = "<table border = 1> <tr>" + name + "</tr>"
        "<tr>" + surname + "</tr>"
        "<tr>" + age + "</tr></table>";
    QTextDocument doc;
    doc.setDefaultStyleSheet("table { border: 1px solid black}");
    doc.setHtml(*html);
    

    此外,您在回答中提到您必须在设置 html 之后添加样式表,但是 QTextDocumentdocs 似乎另有说明:

    默认样式表应用于插入到文档中的所有新的 HTML 格式文本,例如使用 setHtml() 或 QTextCursor::insertHtml()。

    因此为什么setDefaultStylesheet() 在上述代码中是之前 setHtml()

    【讨论】:

    • 感谢您的解决方案,现在可以使用了!但是我无法用border-collapse 做同样的事情,但我认为这是 Qt 的问题(他们可能还没有实现它)
    • 我希望如此,因为 Supported HTML Subset 中没有列出 table。我很高兴这个答案有帮助 - 如果它解决了问题,请不要忘记接受它
    【解决方案2】:

    您还可以将样式信息添加到 HTML 文档内的 &lt;style&gt; 标记中。这适用于 Qt 5.12,但似乎是未记录的行为(至少 list of supported tags 中没有提到 style)。

    您的代码将是:

    QString *html = new QString();
    *html = "<html>"
            "  <head><style>table { border: 1px solid black; }</style></head>"
            "  <body>"
            "    <table border = 1>"
            "      <tr>" + name + "</tr>"
            "      <tr>" + surname + "</tr>"
            "      <tr>" + age + "</tr>"
            "    </table>"
            "  </body>"
            "</html>";
    QTextDocument doc;
    doc.setHtml(*html);
    

    (实际上,我仅使用 Qt QML Text 元素对此进行了测试。但由于它在内部映射到 QTextDocument,我很确定这也适用于 QTextDocument 本身。如果没有,请道歉。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多