代码之家  ›  专栏  ›  技术社区  ›  MusiGenesis

可以将QtQuick标签的CSS空白设置为预包装吗?

  •  0
  • MusiGenesis  · 技术社区  · 6 年前

    我有一个QtQuick Label

    import QtQuick.Controls 1.3 as Controls
    Controls.Label {
        id: lbl
        text: "This is        some <b>bold text</b> with extra      white space"
    }
    

    如果 text 属性包含任何HTML,则标签将其呈现为HTML,原始文本中的多个空格将压缩为单个空格(如果文本不包含HTML,则将其呈现为普通文本并保留空格)。

    QWidget 有一个 setStyleSheet 方法,该方法显然支持样式“white space:pre-wrap”,这是我需要获得HTML呈现以保留空白的内容,但我不确定是否可以将其应用于QML文件中的标签。有什么办法可以做到这一点吗?

    编辑: https://stackoverflow.com/a/2756376/14606 显示如何设置 QLabel . 有没有办法写一个函数让我通过QtQuick 标签 把它当作 基拉贝尔 以这种方式设置样式表?

    2 回复  |  直到 6 年前
        1
  •  0
  •   KYL3R    6 年前

    你只需要知道如何在qml中应用css,而不是代码( widget.setStyleSheet("...") ) ?

    Controls.Label {
        id: lbl;
        white-space: pre-wrap;
        text: "This is        some <b>bold text</b> with extra      white space";
    }
    

    编辑:由于空白不是Label的属性,因此需要为标签文本设置此属性。

    如果可能(只是猜测),请使用:

    Controls.Label.Text {
        white-space: pre-wrap;
    

    Controls.Label {
        id: lbl;
        textFormat: Text.RichText;
        text: "<style>white-space: pre-wrap;</style>This is        some <b>bold text</b> with extra      white space";
    }
    
        2
  •  0
  •   MusiGenesis    6 年前

    你真的可以达到我想要的 Label &#8203;&#32; (它是一个长度为零的字符串,后跟一个常规字符串)。这个 然后将忠实地呈现连续的空格,就像空白样式已设置为预包装一样。不幸的是,自从 在这两种情况下,不以相同的方式处理换行。