Ich habe ein neues QML-Projekt basierend auf Qt 5.9.3 erstellt. Ich habe ein einfaches ApplicationWindow mit einem Button und meinem eigenen Button (MyButton) eingerichtet und ich bekomme nie das onClicked() -Ereignis, um (anscheinend) für beide zu feuern. Mein Anwendungsfenster wird mit 2 Schaltflächen angezeigt. Wenn Sie auf einen der beiden klicken, wird in der Konsolenausgabe nichts angezeigt.qml Button nicht feuernd, gleich mit MouseArea
Ich kompiliere auch meine QML-Quelldateien in der .pro-Datei, wenn das überhaupt zählt. Ich bekomme einige Font-Fehler beim Start, die ich in C++ zu beheben einige Schriftarten gehen, so dass ich etwas sehen kann, außer dass es keine Fehler oder Warnungen gibt. Ich habe ein paar Stunden damit verbracht, einfach ein einfaches Mausklick Ereignis durch ohne Glück zu bekommen.
Jede Hilfe wird geschätzt.
Hier ist meine 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")
}
}
}
und 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()
}
}
}
UPDATE: Ich habe eine sehr dumme Sache tat. in meiner main.cpp Datei, die ich nicht eingeschlossen habe, dachte ich, dass ich sauberer sein würde und meinen QQmlEngine Init-Code in seine eigene getrennte Methode verschiebe. Natürlich, wenn die Motorreferenz out of scope ging, verursachte es mein Problem. Ich habe dort nicht nachgesehen, weil ich zu Unrecht angenommen hatte, dass der qml-Code überhaupt nicht funktionieren würde, wenn da etwas nicht stimmte. Es tut mir leid, dass ich so spät wieder hier war, es war eine sehr arbeitsreiche Woche und es tut mir leid, Bandbreite zu verschwenden. Vielen Dank für die tollen Debugging-Vorschläge sowie für zukünftige Referenz!