【问题标题】:QT Quick - TextField background and bordeQT Quick - TextField 背景和边框
【发布时间】:2014-08-15 18:54:58
【问题描述】:

我从 QT 开始并尝试使用以下 QML 代码设置 TextField 的样式:

property Component textfieldStyle: TextFieldStyle {
    background: BorderImage {
        source: control.focus ? "images/input-border-focused.png" : "images/input-border.png"
        border.left: 0 ; border.right: 0 ; border.top: 0 ; border.bottom: 4
    }
}

我的问题是:有没有办法像下图一样设置这样的边框以及字段内的图标?

蓝色部分是窗口的背景。

如果可以,怎么办?

提前谢谢你。

【问题讨论】:

  • 那么这里的问题到底是什么?
  • 用背景图片设置边框。并且这里的图标在组件内部。边框图像只有 8px 宽度,并且沿输入重复。我想知道我是否可以为此输入设置图标和边框背景。

标签: qt background border qml input-field


【解决方案1】:

既然你必须为 TextFieldStyle 使用一个组件,你不限于使用 BorderImage,你可以使用例如这样的 Rectangle 创建你自己的 Field

TextField {
    style: TextFieldStyle {
        textColor: "black"
        background: Rectangle {
            radius: 2
            border.color: "red"
            border.width: 3

            Image {
                width: 10
                height: 10
                source: "qrc:///inner.png"
                anchors.verticalCenter: parent.verticalCenter
                anchors.left: parent.left
                anchors.leftMargin: 10
            }
        }
    }
}

由于 Rectangle 有边框属性,你可以直接使用它来设置边框。

【讨论】:

  • 是的,但这会给我一个带有所有边框的输入,我只想要底部边框,我没有找到像“border.bottom.witdh”这样的东西有什么类似的吗?
  • 嗯,遗憾的是 Rectangle 元素没有这样的属性。但是您可以为它创建一个自定义组件。看看这个link
  • 请用链接提及更新您的答案,以便我将其标记为正确答案。我使用您提到的链接解决了这个问题。
  • 这在 Quick Controls 2 中不可用。
猜你喜欢
  • 2013-07-06
  • 2015-04-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-23
  • 2019-02-08
  • 1970-01-01
  • 2013-11-10
相关资源
最近更新 更多