Отключите перетаскивание вида, нажав и удерживая кнопку мыши во время перемещения курсора
Я хочу отключить перетаскивание моего списка, используя нажатие и удерживание кнопки мыши при перемещении курсора. Я пытаюсь реализовать некоторые другие функции, такие как множественный выбор с помощью этой команды. Я бы хотел, чтобы прокрутка была включена. Интерактивное свойство Flickable полностью отключает движение вида. Есть ли какое-то решение для этого?
1 ответ
Решение
Я думаю, что есть несколько способов достичь того, что вам нужно, но следующее решение работает.
Идея состоит в том, чтобы иметь MouseArea
и установить interactive
собственность на false
когда сигналы onPressed
а также onClicked
испускаются. interactive
должен быть установлен в true
снова в onReleased
обработчик.
import QtQuick 2.5
import QtQuick.Window 2.2
import QtQuick.Controls 1.4
Window {
visible: true
width: 640
height: 480
title: qsTr("Hello World")
ListModel {
id: listModel
ListElement {
name: "ttt"
number: "111"
}
ListElement {
name: "rrr"
number: "222"
}
ListElement {
name: "sss"
number: "333"
}
ListElement {
name: "xxx"
number: "444"
}
ListElement {
name: "yyy"
number: "555"
}
ListElement {
name: "zzz"
number: "666"
}
ListElement {
name: "aaa"
number: "777"
}
ListElement {
name: "bbb"
number: "888"
}
ListElement {
name: "ccc"
number: "999"
}
ListElement {
name: "ddd"
number: "011"
}
ListElement {
name: "eee"
number: "022"
}
ListElement {
name: "fff"
number: "033"
}
}
ListView {
id: myList
width: 180; height: 100
clip: true
Component {
id: contactsDelegate
Rectangle {
id: wrapper
width: 180
height: contactInfo.height
color: "lightblue"
Text {
id: contactInfo
text: name + ": " + number
color: "black"
}
MouseArea {
anchors.fill: parent
onPressed: {
myList.interactive = false
console.debug("onPressed")
}
onClicked: {
myList.interactive = false
console.debug("onClicked")
}
onReleased: {
myList.interactive = true
console.debug("onReleased")
}
}
}
}
model: listModel
delegate: contactsDelegate
focus: true
}
}