代码拉取完成,页面将自动刷新
同步操作将从 openKylin/ukui-clipboard 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
import QtQuick 2.15
import QtQuick.Controls 2.15
import ContentMenu 1.0
Item {
id: root
property int visibleWidth: 0
property int visibleHeight: 0
property int textFormat: Qt.RichText
Rectangle {
width: parent.visibleWidth
height: parent.visibleHeight
anchors.horizontalCenter: parent.horizontalCenter
color: "transparent"
Flickable {
id: flick
anchors.fill: parent
contentWidth: textEdit.paintedWidth
contentHeight: textEdit.paintedHeight
boundsMovement: Flickable.StopAtBounds
clip: true
ScrollBar.vertical: ScrollBar {
active: true
visible: flick.contentHeight > flick.height
}
ScrollBar.horizontal: ScrollBar {
active: true
visible: flick.contentWidth > flick.width
}
// 鼠标事件处理区域
MouseArea {
anchors.fill: parent
onWheel: {
if (wheel.modifiers & Qt.ShiftModifier) {
flick.contentX -= wheel.angleDelta.y
} else {
flick.contentY -= wheel.angleDelta.y
}
}
}
TextEdit {
id: textEdit
focus: true
selectByMouse: true
wrapMode: TextEdit.Wrap
text: ""
textFormat: root.textFormat
onCursorRectangleChanged: {
flick.ensureVisible(cursorRectangle)
}
Connections {
target: backend
function onPlainTextChanged() {
textEdit.text = backend.plainText
}
}
Component.onCompleted: {
// OCR识别的文本不会特别长,所以直接调用后台接口获取文本内容即可
if (backend.originalType === ContentType.Image && backend.displayingType === ContentType.PlainText) {
text = backend.plainText
} else {
this.clear()
this.paste()
}
flick.contentX = 0
flick.contentY = 0
}
}
function ensureVisible(r) {
if (contentX >= r.x)
contentX = r.x;
else if (contentX + width <= r.x + r.width)
contentX = r.x + r.width - width;
if (contentY >= r.y)
contentY = r.y;
else if (contentY + height <= r.y + r.height)
contentY = r.y + r.height - height;
}
}
}
function copyToClipboard() {
textEdit.selectAll()
textEdit.copy()
}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。