Files
work-secretfile-selfcheck/UmiOCR-data/qt_res/qml/Popup_/MessageSimpleComp.qml

142 lines
4.3 KiB
QML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// =============================================
// =============== 简单消息的界面 ===============
// =============================================
import QtQuick 2.15
import QtQuick.Controls 2.15
import QtGraphicalEffects 1.15 // 阴影
import "../Widgets"
Rectangle {
id: spMsg
property var onHided: undefined // 关闭函数,外部传入
function show(title, msg, time=5000, icon="bell") {
textTitle.text = title
textMsg.text = msg
nowTime = 0
allTime = time>0?time:1 // 防止除0
timerProgressBar.percent = 0
iconComp.icon = icon // 图标
timer.start() // 启动计时器
}
property int allTime: 1 // 总时间
property int nowTime: 0 // 当前时间
property int interval: 10 // 间隔刷新
property int shadowWidth: qmlapp.enabledEffect ? size_.spacing*3 : 0 // 边缘阴影宽度
Timer {
id: timer
interval: spMsg.interval // 间隔
running: false
repeat: true // 重复执行
onTriggered: {
spMsg.nowTime += spMsg.interval
timerProgressBar.percent = spMsg.nowTime/spMsg.allTime
if(spMsg.nowTime>=spMsg.allTime) {
timer.stop() // 停止计时器
if(typeof onHided === "function")
onHided() // 调用关闭函数
return
}
}
}
width: size_.line * 20
height: textTitle.height + textMsg.height+size_.spacing*2
color: theme.specialBgColor
radius: qmlapp.enabledEffect ? size_.panelRadius : 0
// 内容组件
Item {
anchors.fill: parent
anchors.margins: size_.spacing
// 倒计时 ▽按钮
HProgressBar {
id: timerProgressBar
anchors.top: parent.top
anchors.right: parent.right
height: size_.smallLine
width: size_.smallLine*2
color: theme.coverColor1
highlightColor: theme.coverColor2
radius: size_.btnRadius
percent: 0
// 鼠标悬浮背景
Rectangle {
id: btnHoverBg
visible: false
anchors.fill: parent
color: theme.coverColor2
radius: size_.btnRadius
}
// 下箭头图标
Icon_ {
anchors.fill: parent
icon: "down"
color: theme.bgColor
}
}
// 标题图标
Icon_ {
id: iconComp
anchors.top: parent.top
anchors.left: parent.left
color: theme.specialTextColor
height: size_.line
width: size_.line
}
// 标题文字
Text_ {
id: textTitle
anchors.top: parent.top
anchors.left: iconComp.right
anchors.leftMargin: size_.line*0.5
height: size_.line
verticalAlignment: Text.AlignVCenter // 垂直居中
}
// 内容文字
Text_ {
id: textMsg
anchors.top: textTitle.bottom
anchors.left: parent.left
anchors.right: parent.right
anchors.topMargin: size_.smallSpacing
color: theme.subTextColor
font.pixelSize: size_.smallText
wrapMode: TextEdit.Wrap // 尽量在单词边界处换行
maximumLineCount: 2 // 限制显示两行
height: text=="" ? 0:undefined // 无文字时高为0有文字时自动高度
}
}
MouseArea {
anchors.fill: parent
hoverEnabled: true
onEntered: {
btnHoverBg.visible = true
}
onExited: {
btnHoverBg.visible = false
}
function mouseClicked() {
timer.stop() // 停止计时器
if(typeof onHided === "function")
onHided() // 调用关闭函数
}
// 单击隐藏弹窗
onClicked: mouseClicked()
// 双击弹出主窗,隐藏弹窗
onDoubleClicked: {
qmlapp.mainWin.setVisibility(true) // 主窗可见
mouseClicked()
}
}
// 边缘阴影
layer.enabled: shadowWidth>0
layer.effect: DropShadow {
transparentBorder: true
color: theme.coverColor4
samples: shadowWidth
}
}