Qml中的属性contentItem开始看起来有点迷惑,太简单的例子感觉它的存在又多此一举,下面用2个例子来对比一下实现效果:
例子1:
import QtQuick 2.12
import QtQuick.Controls 2.12
import QtQuick.Window 2.12
Window {
height: 240;
width: 320;
visible: true;
Button {
id: root;
text:"testText";
anchors.centerIn: parent;
Item {
anchors.fill: parent;
Text {
text: "Item.Text";
color: "red";
}
}
}
}
例子2:
import QtQuick 2.12
import QtQuick.Controls 2.7
import QtQuick.Window 2.7
Rectangle {
height: 240;
width: 320;
visible: true;
Row{}
Button {
id: root;
x:0;
y:20;
text:"testText";
//anchors.centerIn: parent;
contentItem: Item {
anchors.fill: parent;
Text {
text: "Item.Text";
color: "red";
horizontalAlignment: Text.AlignCenter;
verticalAlignment: Text.AlignVCenter;
}
}
}
Button {
id: control
x:0;
y:100;
text: qsTr("ButtonButtonButton");
contentItem: Label {
text: control.text;
font: control.font;
verticalAlignment: Text.AlignVCenter;
}
}
Button {
id: control3;
x:100;
y:200;
text: qsTr("Button");
background: Rectangle {
implicitWidth: 100;
implicitHeight: 40;
opacity: enabled ? 1 : 0.3;
color: control3.down ? "#d0d0d0" : "#e0e0e0";
}
}
}
例子1的运行结果:
例子2的运行结果: