Я создал новый проект QML на основе Qt 5.9.3. Я устанавливаю простой ApplicationWindow с помощью кнопки, а также свою собственную кнопку (MyButton), и я никогда не получаю событие onClicked() для запуска (очевидно) ни для одного из них. Окно моего приложения всплывает с двумя кнопками. Нажатие на любой из них ничего не показывает в выводе моей консоли.
Я также предварительно компилирую свои исходные файлы qml в файл .pro, если это вообще имеет значение. Я получаю некоторые ошибки шрифта при запуске, которые я исправляю в С++, чтобы заставить работать некоторые шрифты, чтобы я мог что-то увидеть, кроме того, что ошибок или предупреждений нет. Я потратил пару часов, просто пытаясь получить простое событие щелчка мыши, но безуспешно.
Любая помощь приветствуется.
Вот мой main.qml:
import QtQuick 2.7
import QtQuick.Controls 2.0
ApplicationWindow {
visible: true
width: 640
height: 480
title: "App Title"
color: "white"
Button {
text: "Button"
onClicked: {
console.log("clicked")
}
}
MyButton {
anchors.right: parent.right
anchors.top: parent.top
onClicked: {
console.log("my button clicked")
}
}
}
и MyButton.qml
import QtQuick 2.7
Rectangle {
id: button
width: 100
height: 50
color: "yellow"
signal clicked()
MouseArea {
id: mouseArea
anchors.fill: button
visible: false
enabled: true
onClicked: {
console.log("my button mouse clicked")
clicked()
}
}
}
ОБНОВЛЕНИЕ: Я сделал очень глупый поступок. в моем файле main.cpp, который я не включил, я подумал, что буду чище и перенес код инициализации QQmlEngine в отдельный метод. Конечно, когда ссылка на двигатель вышла за рамки, это вызвало мою проблему. Я не смотрел туда, потому что ошибочно предположил, что код qml вообще не будет работать, если что-то там не так. Извините, что возвращаюсь к этому так поздно, это была очень напряженная неделя, и извините за потраченную впустую полосу пропускания. Спасибо за отличные предложения по отладке, а также за будущие ссылки!