【发布时间】:2019-05-28 10:46:22
【问题描述】:
我想拥有 Material 风格的 ProgressBar 组件,但要进行一些修改以使其高度可调。 到目前为止一切顺利,我得到了我想要的结果。
所以我只是将这段代码复制到 MyPb.qml 中以将其用作组件:
import QtQuick 2.11
import QtQuick.Templates 2.4 as T
import QtQuick.Controls.Material 2.4
import QtQuick.Controls.Material.impl 2.4
T.ProgressBar {
id: control
property real radius: 3
contentItem: ProgressBarImpl {
implicitHeight: control.height
scale: control.mirrored ? -1 : 1
color: control.Material.accentColor
progress: control.position
indeterminate: control.visible && control.indeterminate
}
background: Rectangle {
implicitWidth: control.width
implicitHeight: control.height
radius: control.radius
color: Qt.rgba(control.Material.accentColor.r, control.Material.accentColor.g, control.Material.accentColor.b, 0.25)
}
}
为了举例,给出了这个结果:
附上代码:
Rectangle {
width: 600
height: 300
color: "black"
MyPb {
anchors.centerIn: parent
id: prg
width: 100
height: 20
indeterminate: false
radius: 5
visible: true
value: 0.5
}
}
由于 ProgressBarImpl 并不真正支持半径,圆角被“埋”在不透明的进度矩形下,如图所示(进度条左侧)。
现在,我不制作自己的进度条的原因是我也想要“不确定”动画。所以我以为会很多 重用 Qt 实现比开始自己制作更简单 动画。
所以我想知道是否有办法让 Material 进度条,但对其应用某种处理以在不确定 = false/true 的情况下获得圆角。
任何帮助将不胜感激!
【问题讨论】:
-
您使用的是什么版本的 Qt?我有很多。有时特定版本非常重要,有时则不重要,但我宁愿从正确的版本开始,以防万一。 :)
-
@AshleyTharp 我正在使用 QT 5.11,但坦率地说,任何更新的版本都适合我(例如,如果它与 5.12 一起工作,我很乐意切换)
-
尝试将
ProgressBar的padding属性设置为非零,并将contentItem使用Rectangle并将其半径设置为3。我上周实现了您想要的那个,但我没有现在没有它。
标签: qt user-interface qml components progress-bar