我创建了一个基于 Qt 5.9.3 的新 QML 项目。我设置了一个带有按钮的简单 ApplicationWindow 以及我自己的按钮(MyButton),但我从来没有让 onClicked() 事件(显然)为它们中的任何一个触发。弹出我的应用程序窗口,显示 2 个按钮。单击其中任何一个都不会在我的控制台输出中显示任何内容。
如果这很重要,我还会在 .pro 文件中预编译我的 qml 源文件。我在启动时遇到了一些字体错误,我在 C++ 中修复了一些字体错误,以便我可以看到一些东西,除了没有错误或警告。我花了几个小时试图通过一个简单的鼠标单击事件但没有运气。
任何帮助表示赞赏。
这是我的 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 代码将根本无法工作。很抱歉这么晚才回来,这是一个非常忙碌的一周,很抱歉浪费了带宽。感谢您提供出色的调试建议以及供将来参考!