我正在嘗試一些東西來加強我對 C 和 QML 的體驗。
我有一個 MouseArea 專案。我想將“ onPressed ”、“ onReleased ”和“ onPositionChanged ”事件傳遞到我試圖用 C 撰寫的后端。其實我想要這個干凈和簡單的代碼。我可以通過用 QML 撰寫來做任何我想做的事情。
問題是我無法在 C 端定義 MouseArea 的“ mouse.button ”變數。我收到如下錯誤:
qrc:/main.qml:58: Error: Unknown method parameter type: Qt::MouseButton
我的 QML 腳本:
.
.
Item{
id: item
anchors.fill: parent
Viewer{
id: viewer
}
MouseArea{
id: viewerMouseArea
anchors.fill: parent
hoverEnabled: true
acceptedButtons: Qt.RightButton | Qt.LeftButton | Qt.MiddleButton
onPressed: {
//console.log("Mouse buttons in mouse area pressed.");
viewer.mousePressEvent(mouseX, mouseY, mouse.button);
}
onReleased:{
//console.log("Mouse buttons in mouse area released.")
viewer.mouseReleaseEvent(mouseX, mouseY, mouse.button);
}
onPositionChanged:{
//console.log("Position of cursor in mouse area changed.")
//viewer.mouseMoveEvent(x, mouseY);
}
}
}
.
.
我的 C 后端代碼:
.
.
void Viewer::mousePressEvent(double x, double y, Qt::MouseButton button) {
qDebug() << "Viewer::mousePressEvent()";
}
void Viewer::mouseReleaseEvent(double x, double y, Qt::MouseButton button) {
qDebug() << "Viewer::mouseReleaseEvent()";
}
void Viewer::mouseMoveEvent(double x, double y) {
qDebug() << "Viewer::mouseMoveEvent()";
}
.
.
如何在 C 中訪問 QML 中的 mouse.button 變數?
uj5u.com熱心網友回復:
我在這里查看了檔案。https://doc.qt.io/qt-6/qt.html#MouseButton-enum我通過直接使用無符號整數解決了它。
void Viewer::mousePressEvent(double x, double y, quint32 button) {
qDebug() << "Viewer::mousePressEvent()";
qDebug() << "x: " << x << " y: " << y << " button: " << button;
}
void Viewer::mouseReleaseEvent(double x, double y, quint32 button) {
qDebug() << "Viewer::mouseReleaseEvent()";
qDebug() << "x: " << x << " y: " << y << " button: " << button;
}
void Viewer::mouseMoveEvent(double x, double y) {
qDebug() << "Viewer::mouseMoveEvent()";
}
如果您有更好的解決方案建議,請告訴我。我會很感激。
控制臺輸出:
Viewer::mousePressEvent()
x: 243 y: 161 button: 2
Viewer::mouseReleaseEvent()
Viewer::mousePressEvent()
x: 282 y: 183 button: 1
Viewer::mouseReleaseEvent()
Viewer::mousePressEvent()
x: 277 y: 138 button: 4
Viewer::mouseReleaseEvent()
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/448152.html
