如果我在SidebarMenuButton.qml组件中声明一个MouseArea,如下所示:
import QtQuick 2.3
import QtQuick.Controls 1.2
import QtQuick.Controls.Styles 1.2
Button {
width: buttonNewMessage.width
height: buttonNewMessage.height
anchors {
horizontalCenter: parent.horizontalCenter
topMargin: 5
}
style: ButtonStyle {
background: Rectangle {
color: 'transparent'
}
label: Text {
text: control.text
color: 'white'
font.family: 'Helvetica'
font.pixelSize: 12
font.bold: true
verticalAlignment: Text.AlignVCenter
horizontalAlignment: Text.AlignLeft
}
}
MouseArea {
anchors.fill: parent
cursorShape: "PointingHandCursor"
}
}
并在main.qml中使用它,如下所示:
SidebarMenuButton {
id: buttonInbox
text: 'Inbox'
anchors.top: buttonNewMessage.bottom
MouseArea {
anchors.fill: parent
onClicked: {
newMessageContainer.visible = false;
inboxContainer.visible = true;
}
}
}
然后main.qml中的按钮覆盖SidebarMenuButton.qml的MouseArea 我可以扩展那个MouseArea而不是覆盖它吗?
答案 0 :(得分:2)
问题是:"为什么要将另一个MouseArea放在Button中已存在的那个上,而不是重新使用它?更重要的是,为什么要将MouseArea放在Button组件中,该组件已经拥有自己的组件"。
如果您需要能够在main.qml中使用onClicked: { ... }
,则只需转发信号,因此只需在自定义组件中声明signal clicked ();
,然后从内部MouseArea触发它,所以你能够从外面捕获它。
但是我仍然在想你的代码中的某些内容是完全错误的......