利用 Qt.CustomContextMenu 來建立右鍵選單方法:
1、QWidget 和它的子類 contextMenuPolicy 的預設值是 Qt.DefaultContextMenu 的, 所以需要透過 setContextMenuPolicy(QtCore.Qt.CustomContextMenu) 重新來設定他的值;
2、在Qt設計師中, 可以直接修改 contextMenuPolicy 的值為 CustomContextMenu 並且寫入到UI檔案中,用Qt設計師可以不用 setContextMenuPolicy 方法來設定。
3、CustomContextMenu 它所發出的是一個 customContextMenuRequested 訊號 (signal) 如下: void customContextMenuRequested (const QPoint&) 這個訊號是QWidget唯一與右鍵選單有關的訊號(也是自有的唯一訊號), 同時也是很容易被忽略的訊號(signal) 注: 文件中QWidget方法和屬性巨量多, 就可以輕鬆自定義想要的右鍵選單了,手編寫槽(slot)。 def myListWidgetContext(self, point): popMenu = QtGui.QMenu() popMenu.addAction(QtGui.QAction(u"新增", self)) popMenu.addAction(QtGui.QAction(u"刪除", self)) popMenu.addAction(QtGui.QAction(u"修改", self)) popMenu.exec_(QtGui.QCursor.pos())
4、接著就是連線槽。
5、新增成功。
利用 Qt.CustomContextMenu 來建立右鍵選單方法:
1、QWidget 和它的子類 contextMenuPolicy 的預設值是 Qt.DefaultContextMenu 的, 所以需要透過 setContextMenuPolicy(QtCore.Qt.CustomContextMenu) 重新來設定他的值;
2、在Qt設計師中, 可以直接修改 contextMenuPolicy 的值為 CustomContextMenu 並且寫入到UI檔案中,用Qt設計師可以不用 setContextMenuPolicy 方法來設定。
3、CustomContextMenu 它所發出的是一個 customContextMenuRequested 訊號 (signal) 如下: void customContextMenuRequested (const QPoint&) 這個訊號是QWidget唯一與右鍵選單有關的訊號(也是自有的唯一訊號), 同時也是很容易被忽略的訊號(signal) 注: 文件中QWidget方法和屬性巨量多, 就可以輕鬆自定義想要的右鍵選單了,手編寫槽(slot)。 def myListWidgetContext(self, point): popMenu = QtGui.QMenu() popMenu.addAction(QtGui.QAction(u"新增", self)) popMenu.addAction(QtGui.QAction(u"刪除", self)) popMenu.addAction(QtGui.QAction(u"修改", self)) popMenu.exec_(QtGui.QCursor.pos())
4、接著就是連線槽。
5、新增成功。