MyIconButton.xml
javascript
import QtQuick 2.4
Rectangle {
id: rec
property alias img_src: icon.source
property alias btn_txt: button.text
property color clr_enter: "#dcdcdc"
property color clr_exit: "#ffffff"
property color clr_click: "#aba9b2"
property color clr_release: "#ffffff"
//自定义点击信号
signal clickedLeft()
signal clickedRight()
signal release()
width: 130
height: 130
radius: 10
Image {
id: icon
width: 100
height:100
source: "qrc:/mycamera.png" //图片资源
fillMode: Image.PreserveAspectFit
clip: true
anchors.top: parent.top
anchors.right: parent.right
anchors.left: parent.left
anchors.margins: 0
}
Text {
id: button
text: qsTr("button")
anchors.top: icon.bottom
anchors.topMargin: 5
anchors.horizontalCenter: icon.horizontalCenter
anchors.bottom: icon.bottom
anchors.bottomMargin: 5
font.bold: true
font.pointSize: 14
}
MouseArea {
id: mouseArea
anchors.fill: parent
hoverEnabled: true
//接受左键和右键输入
acceptedButtons: Qt.LeftButton | Qt.RightButton
onClicked: {
//左键点击
if (mouse.button === Qt.LeftButton)
{
parent.clickedLeft()
// console.log(button.text + " Left button click")
}
else if(mouse.button === Qt.RightButton)
{
parent.clickedRight()
// console.log(button.text + " Right button click")
}
}
//按下
onPressed: {
color = clr_click
}
//释放
onReleased: {
color = clr_enter
parent.release()
console.log("Release")
}
//指针进入
onEntered: {
color = clr_enter
// console.log(button.text + " mouse entered")
}
//指针退出
onExited: {
color = clr_exit
// console.log(button.text + " mouse exited")
}
}
}
调用:
javascript
MyIconButton {
x: mainWindow.width-40
y: -8
width: 20
height: 20
radius: 5
id: btClose
Image {
id: name
width: 20
height:20
source: "qrc:/image/close.png"
}
btn_txt: ""
onClickedLeft: close()
//onClickedRight: close()
}