答案 0 :(得分:2)
GroupBox {
id: control
title: qsTr("GroupBox")
anchors.centerIn: parent
width: 300
height: 150
background: Rectangle {
y: control.topPadding - control.padding
width: parent.width
height: parent.height - control.topPadding + control.padding
color: "transparent"
border.color: "#21be2b"
radius: 2
}
label: Rectangle {
anchors.horizontalCenter: parent.horizontalCenter
anchors.bottom: parent.top
anchors.bottomMargin: -height/2
color: "white" //set this to the background color
width: parent.width * 0.7
height: title.font.pixelSize
Text {
id: title
text: qsTr("My Tilte")
anchors.centerIn: parent
font.pixelSize: 32
}
}
}
如果您希望标签透明,那么更复杂的解决方案是使用Canvas绘制背景矩形:
<强> CustomBox.qml 强>
import QtQuick 2.7
Item {
id: box
property string borderColor: "black"
property int borderWidth: 1
onWidthChanged: canvas.requestPaint()
onHeightChanged: canvas.requestPaint()
Canvas {
id: canvas
anchors.fill: parent
antialiasing: true
onPaint: {
var ctx = canvas.getContext('2d')
ctx.strokeStyle = box.borderColor
ctx.lineWidth = box.borderWidth
ctx.beginPath()
ctx.moveTo(width*0.15, 0)
ctx.lineTo(0, 0)
ctx.lineTo(0, height)
ctx.lineTo(width, height)
ctx.lineTo(width, 0)
ctx.lineTo(width - width * 0.15, 0)
ctx.stroke()
}
}
}
然后您可以像这样使用它:
GroupBox {
id: control
title: qsTr("GroupBox")
anchors.centerIn: parent
width: 300
height: 150
background: CustomBox {
y: control.topPadding - control.padding
width: parent.width
height: parent.height - control.topPadding + control.padding
borderColor: "black"
borderWidth: 1
}
label: Rectangle {
anchors.horizontalCenter: parent.horizontalCenter
anchors.bottom: parent.top
anchors.bottomMargin: -height/2
color: "transparent"
width: parent.width * 0.7
height: title.font.pixelSize
Text {
id: title
text: qsTr("Settings")
anchors.centerIn: parent
font.pixelSize: 32
}
}
}
答案 1 :(得分:0)
尝试一下:
GroupBox{
id: id_keyListBox
label: Label{
text: "Choose an account to see details"
color: "blue"
}
答案 2 :(得分:0)
您可以使用label.x将其设置在中间
GroupBox {
title: "Potato"
label.x: width/2 - label.contentWidth/2
Label {
text: "Wubba lubba dub dub."
}
}