QML 自定义菜单及按钮的应用 [转]
- 复制一份qrc,重命名:
- 工程文件中添加,然后右键项目执行qmake:
- 自定义按钮(属性的应用,接口):
import QtQuick 2.14 import QtQuick.Controls 2.14 Button { id: control property color normalColor: "#E4E4E4" property color hoveredColor: "#F65050" property color iconHoveredColor: "white" property color pressedColor: "#FFAAAA" states: [ State { name: "pressed" when: control.down PropertyChanges { target: bg color: control.pressedColor } }, State { name: "hovered" when: control.hovered PropertyChanges { target: bg color: control.hoveredColor } PropertyChanges { target: control icon.color: control.iconHoveredColor } } ] background: Rectangle { id: bg color: control.normalColor } }
- 布局:
import QtQuick.Layouts 1.14 Rectangle { id: appContent anchors.fill: parent anchors.margins: gConfig.isMaxed ? 0 : 10 color: "#ffffff" border.color: "#DEDEDE" ColumnLayout { anchors.fill: parent spacing: 0 Header { Layout.fillWidth: true height: 30 } Item { Layout.fillWidth: true Layout.fillHeight: true } } }
- 自定义按钮的应用:
import QtQuick 2.14 import QtQuick.Controls 2.14 import "../widgets" Rectangle { height: parent.height color: "#E4E4E4" MoveArea { height: parent.height anchors.left: parent.left anchors.right: parent.right anchors.rightMargin: 135 dispatcher: appWindow } Label { anchors.left: parent.left anchors.leftMargin: 10 anchors.top: parent.top anchors.bottom: parent.bottom width: 350 verticalAlignment: Label.AlignVCenter text: qsTr("Qt Quick") font.pixelSize: 12 font.family: "microsoft yahei" } CButton { id: minWindow width: 45 height: 30 hoveredColor: "#DEDEDE" pressedColor: "#CCCCCC" iconHoveredColor: "#666666" anchors.right: parent.right anchors.rightMargin: 90 display: AbstractButton.IconOnly icon.source: "../../assets/svgs/min.svg" icon.width: 13 icon.height: 1 onClicked: { appWindow.showMinimized() gConfig.isMaxed = false } } CButton { id: normalWindow visible: gConfig.isMaxed width: 45 height: 30 hoveredColor: "#DEDEDE" pressedColor: "#CCCCCC" iconHoveredColor: "#666666" anchors.right: closeBtn.left display: AbstractButton.IconOnly icon.source: "../../assets/svgs/normal.svg" icon.width: 12 icon.height: 12 onClicked: { appWindow.showNormal() gConfig.isMaxed = false } } CButton { visible: !gConfig.isMaxed id: maxWindow width: 45 height: 30 hoveredColor: "#DEDEDE" pressedColor: "#CCCCCC" iconHoveredColor: "#666666" anchors.right: closeBtn.left display: AbstractButton.IconOnly icon.source: "../../assets/svgs/max.svg" icon.width: 11 icon.height: 11 onClicked: { appWindow.showMaximized() gConfig.isMaxed = true } } CButton { id: closeBtn width: 45 height: 30 anchors.right: parent.right display: AbstractButton.IconOnly icon.source: "../../assets/svgs/close.svg" icon.width: 10 icon.height: 10 onClicked: appWindow.close() } }