gpt4 book ai didi

qt - QML ListView : how to copy selected item to clipboard?

转载 作者:行者123 更新时间:2023-12-02 03:01:48 24 4
gpt4 key购买 nike

我有带有文本项的 ListView:

import QtQuick 2.12
import QtQuick.Window 2.12

Window {
visible: true
width: 300
height: 300

ListModel {
id: listModel
ListElement {
name: "Bill Smith"
}
ListElement {
name: "John Brown"
}
ListElement {
name: "Sam Wise"
}
}

ListView {
anchors.fill: parent

model: listModel
delegate: Text {
text: model.name
width: ListView.view.width

MouseArea {
anchors.fill: parent
onClicked: parent.ListView.view.currentIndex = model.index
}
}

highlight: Rectangle {
color: 'light grey'
}
}
}

用户可以通过鼠标点击来选择这个列表中的一个项目。我想通过 Ctrl+C 将选定的项目文本复制到剪贴板。

这个任务有简单的解决方案吗?是否可以在没有 C++ 代码的情况下仅在 QML 中执行此操作?

最佳答案

一般来说,你应该使用QClipBoard因为这个问题的答案表明自 QClipBoard无法从 QML 访问对象,但解决方法是使用不可见的 TextEdit因为这个对象可以保存剪贴板中的文本:

import QtQuick 2.12
import QtQuick.Window 2.12

Window {
visible: true
width: 300
height: 300

ListModel {
id: listModel
ListElement {
name: "Bill Smith"
}
ListElement {
name: "John Brown"
}
ListElement {
name: "Sam Wise"
}
}

ListView {
id: listView
anchors.fill: parent
model: listModel
delegate: Text {
text: model.name
width: ListView.view.width

MouseArea {
anchors.fill: parent
onClicked: parent.ListView.view.currentIndex = model.index
}
}
highlight: Rectangle {
color: 'light grey'
}
}
TextEdit{
id: textEdit
visible: false
}
Shortcut {
sequence: StandardKey.Copy
onActivated: {
textEdit.text = listModel.get(listView.currentIndex).name
textEdit.selectAll()
textEdit.copy()
}
}
}

关于qt - QML ListView : how to copy selected item to clipboard?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59806339/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com