Я пытаюсь реализовать пользовательскую кнопку с функциями press()
и release()
, которые я вызываю при получении ожидаемого ключевого события. В этих функциях вызываются сигналы pressed()
и released()
. released()
работает отлично, но при вызове pressed()
отображается ошибка:
TypeError: Property 'pressed' of object CustomButton_QMLTYPE_3(0x78214d8) is not a function
Моя теория состоит в том, что QML не может дифференцировать свойство bool pressed
кнопки и сигнал pressed()
. Это ошибка или я делаю что-то не так? Вот что я сделал:
Это qml-файл пользовательской кнопки:
import QtQuick 2.10
import QtQuick.Controls 2.12
Button {
id: control
function press() {
down = true;
pressed();
}
function release() {
down = false;
released()
}
}
В приведенном ниже примере, когда клавиша F3 нажата или отпущена, я вызываю функции кнопки и ожидаю их чтобы прийти к Соединениям, которые я сделал.
CustomButton {
id: customButton
width: parent.width
height: parent.height
Connections {
target: customButton
onPressed: {
console.log("Custom button pressed!\n");
}
onReleased: {
console.log("Custom button released!\n")
}
}
}
focus: true
Keys.onPressed: {
if(event.key === Qt.Key_F3 && !event.isAutoRepeat) {
console.log("F3 Key pressed!")
customButton.press()
}
}
Keys.onReleased: {
if(event.key === Qt.Key_F3 && !event.isAutoRepeat) {
console.log("F3 Key released!")
customButton.release()
}
}
Как я уже говорил, релиз работает, но пресса проблематична c. Я вижу эти строки в консоли:
qml: F3 Key pressed!
qml: press function called
file:///D:/Projects/QmlExamples/qml/fxMenu/button/CustomButton.qml:10: TypeError: Property 'pressed' of object CustomButton_QMLTYPE_3(0x78214d8) is not a function
qml: F3 Key released!
qml: release function called
qml: Custom button released!