【问题标题】:QML: Autoresize the TextInputQML:自动调整文本输入的大小
【发布时间】:2018-04-10 18:04:53
【问题描述】:

Text 类型有一个很好的功能fontSizeMode,它试图使字体大小适合可视组件的实际大小。因此,当我将字体大小设置为 20 并调整窗口大小时,这个字体大小太大了,它会自动降低字体大小。

Text {
          text: qsTr("Text")
          font.pointSize: 20
          fontSizeMode: Text.Fit
     }

现在我想将此功能与TextInput 类型一起使用,但没有fontSizeMode 可用。所以我的问题是,如何使用TextInput 实现相同的功能?现在,当设置字体大小并缩小窗口时,TextInput 中的字符串会像这样被切成两半:

【问题讨论】:

    标签: qt fonts qml font-size


    【解决方案1】:

    您可以缩小元素以将其限制为特定宽度:

      Rectangle {
        width: 100
        height: 50
        color: "red"
        TextInput {
          anchors.centerIn: parent
          font.pointSize: 20
          text: "test"
          scale: Math.min(1, parent.width / contentWidth)
          Rectangle {
            color: "white"
            anchors.fill: parent
            z: -1
          }
        }
      }
    

    【讨论】:

    • 感谢您的回答。问题不在于宽度,有clip。我的问题是身高。我在显示的问题中添加了一张图片。
    • 然后根据可用高度进行缩放。
    • 如果你的意思只是将宽度重写为高度,它没有帮助,行为仍然相同。
    • 这可能是因为在 dtech 提供的示例中,Rectangle 具有固定宽度,不受窗口大小的限制。如果您将height 更改为 20,您将看到比例有效。您应该将比例或容器大小绑定到实际窗口大小。
    • @T.Poe - 这个概念是通用的,如果数量超过限制,则按数量/限制比例缩小。只需将其插入您的代码即可。这里只有程序员,没有通灵者神奇地知道你的代码和你期望的解决方案的确切格式。
    【解决方案2】:

    我坚持使用这个解决方案。将font.pixelSize 属性绑定到父高度。虽然我不确定它是否 100% 正确,但它完全符合我的要求。如果有什么问题,请告诉我。

     Text {
          text: qsTr("Text")
          font.pixelSize: 0.1 * parent.height
     }
    

    【讨论】:

    • 他问的是TextInput,而不是Text。
    猜你喜欢
    • 1970-01-01
    • 2015-11-01
    • 2012-11-23
    • 1970-01-01
    • 2010-11-20
    • 1970-01-01
    • 1970-01-01
    • 2017-08-06
    • 2011-02-28
    相关资源
    最近更新 更多