Qt 5.9.3 に基づいて新しい QML プロジェクトを作成しました。Button と独自のボタン (MyButton) を使用して単純な ApplicationWindow をセットアップしましたが、onClicked() イベントが発生することはありません (どうやら)。アプリケーション ウィンドウがポップアップし、2 つのボタンが表示されます。いずれかをクリックしても、コンソール出力には何も表示されません。
また、それが問題になる場合は、qml ソース ファイルを .pro ファイルにプリコンパイルします。起動時にいくつかのフォント エラーが発生します。これを 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 init コードを独自の別のメソッドに移動すると思いました。もちろん、エンジン参照が範囲外になると、問題が発生しました。そこに何か問題があるとqmlコードがまったく機能しないと誤って想定したため、私はそこを見ていませんでした。非常に忙しい 1 週間であり、帯域幅を浪費して申し訳ありませんでした。今後の参考のために、素晴らしいデバッグの提案もありがとうございます!