當我的滑鼠事件發生時,選單可以彈出,but not immediately似乎有點延遲。這是我的代碼,有什么問題嗎?
我的 Qt 版本是 5.15,我的系統是 Windows 10。
import QtQuick 2.12
import QtQuick.Window 2.12
import QtQuick.Controls 2.12
import QtQuick.Controls 1.4
import QtQuick.Layouts 1.12
Window {
visible: true
width: 450
height: 350
title: qsTr("ListView")
property bool refreshFlag: false
Rectangle {
id: rightview
width: 60
height: 300
x: 100
color: "#EEEEEE"
MouseArea {
anchors.fill: parent
acceptedButtons: Qt.RightButton | Qt.LeftButton
onClicked: {
console.log(width)
if (mouse.button === Qt.RightButton)
contextMenus.popup()
}
Menu {
id: contextMenus
MenuItem { text: "open" }
MenuItem { text: "save " }
MenuItem { text: "else..." }
}
}
Text {
font.pointSize: 12
text: "content"
}
}
}
這是我的截圖

uj5u.com熱心網友回復:
您的程式片段有幾個問題:
- 不要將 QtQuick.Controls 1.x 與 QtQuick.Controls 2.x 混合使用
- 建議您將所有對版本的參考更新到 2.15
- 不要在 MouseArea 中宣告 Menu,這沒有意義
- MouseArea 可以優化為只接受 RightButton
- 在“頂層”宣告選單
這是您的代碼的清理:
import QtQuick 2.15
import QtQuick.Controls 2.15
Page {
anchors.fill: parent
Rectangle {
x: 100
width: 60
height: 300
color: "#EEEEEE"
Text {
font.pointSize: 12
text: "content"
}
MouseArea {
anchors.fill: parent
acceptedButtons: Qt.RightButton
onClicked: contextMenus.popup()
}
}
Menu {
id: contextMenus
MenuItem { text: "open" }
MenuItem { text: "save " }
MenuItem { text: "else..." }
}
}
您可以在線試用!
當我使用 qmlonline 運行上述代碼段時,似乎沒有性能問題。我不認為代碼是一個問題。我認為我們需要了解:
- 你的 Qt 版本
- 您的平臺(即作業系統、硬體等)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/514828.html
