Уменьшите время до тех пор, пока onPressAndHold не будет выдан на ItemDelegate

#qt #qml #qtquick2 #qtquickcontrols2

Вопрос:

У меня есть следующий пример быстрого приложения Qt:

 import QtQuick 2.12
import QtQuick.Controls 2.15
import QtQuick.Window 2.12

Window {
    width: 640
    height: 480
    visible: true

    ListView {
        id: list
        anchors.fill: parent

        model: ListModel {
            id: listView
            ListElement { name: "Element 1" }
            ListElement { name: "Element 2" }
            ListElement { name: "Element 3" }
            ListElement { name: "Element 4" }
        }

        delegate: ItemDelegate {

            property string textcolor: "black";
            contentItem: Text {
                id: content
                width: parent.width
                text: name
                color: textcolor
            }

            onPressAndHold: { textcolor = "red"; }
        }
    }
}
 

Я меняю цвет текста на одном элементе во время onPressAndHold события. Как я могу уменьшить продолжительность до тех пор, пока событие не будет отправлено?
Я пытался использовать pressAndHoldInterval, но, похоже, он не существует для ItemDelegate.

Ответ №1:

Интервал устанавливается через mousePressAndHoldInterval() of QStyleHints , в этом случае решение заключается в использовании задатчика, который, по-видимому, не задокументирован.

 QGuiApplication app(argc, argv);
app.styleHints()->setMousePressAndHoldInterval(10);
 

Комментарии:

1. Это работает как заклинание! Я искал решение в QML и никогда не думал о том, чтобы установить его глобально.