0
在這個論壇的訪問者的幫助下我在QListWidget中創建了一個自定義的上下文菜單。現在我試圖解決一個問題,即當用戶右鍵點擊小部件時鼠標不在任何項目上時菜單顯示。當出現這種情況時,我希望菜單不顯示出來。我一直在考慮明顯的情況 - 鼠標懸停在窗口小部件中的某個項目上?但我不知道如何做到這一點。 預先感謝您所有的答案:)Qt - 如何改善我的contextmenu
在這個論壇的訪問者的幫助下我在QListWidget中創建了一個自定義的上下文菜單。現在我試圖解決一個問題,即當用戶右鍵點擊小部件時鼠標不在任何項目上時菜單顯示。當出現這種情況時,我希望菜單不顯示出來。我一直在考慮明顯的情況 - 鼠標懸停在窗口小部件中的某個項目上?但我不知道如何做到這一點。 預先感謝您所有的答案:)Qt - 如何改善我的contextmenu
既然你不告訴你目前如何創建上下文菜單,我會從一開始就承擔......
設置Widget的contextMenuPolicy到Qt::CustomContextMenu
customContextMenuRequested信號連接部件的槽,將顯示您的自定義菜單
下面是PyQt中的一個例子。您可以翻譯這個QT間期
class Widget(QtGui.QWidget):
def __init__(self,parent=None):
super(Widget, self).__init__(parent)
self.list = QtGui.QListWidget()
self.list.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
self.list.customContextMenuRequested.connect(self.handleContext)
layout = QtGui.QVBoxLayout(self)
layout.addWidget(self.list)
self.list.addItems(["one", "two"])
def handleContext(self, pos):
item = self.list.itemAt(pos)
if item is not None:
menu = QtGui.QMenu("Context Menu", self)
menu.addAction("FOO")
ret = menu.exec_(self.list.mapToGlobal(pos))
PyQt4中,如果在給定位置的項目爲None
,然後它是一個空的空間。在Qt中,它應該是一個空指針。
我就像你說的那樣完成它。用於創建對話框的函數void MainWindow :: contextMenuforNotesArea(const QPoint&pos){QMenu contextMenu(tr(「Context menu」),this); ... contextMenu.exec(ui-> notesWidget-> mapToGlobal(pos)); } [鏈接] http://img841.imageshack.us/img841/4735/nb1h.png 大中央小部件是連接到功能以上 [鏈接]的listWidget http://img571.imageshack.us /img571/2599/nb2t.png 這是問題,當用戶點擊小部件中的空白空間時,他之前點擊的項目仍處於選中狀態,因此contextmenu將顯示該項目。 – Aspect
在展示popul之前,您是否確實檢查了該位置的物品,或者您是否只是盲目地擡起了一個彈出窗口?我的答案說檢查位置,並看看是否該項目是有效的,然後彈出 – jdi
Im sory我可能會用我的英語貶低某些東西,但這就是我如何檢查該項是否有效的問題 – Aspect