我想彈出一個菜單,當用戶點擊QTreeWidgetItem中的一個對象時。我雖然關於從QWidget捕獲信號contextMenuRequested,然後使用itemAt從視圖中檢索索引。但這看起來不太漂亮。有沒有更簡單的方法可以調用視圖內某個項目的菜單?在QTreeWidget中調用上下文菜單
4
A
回答
4
寫自己的自定義ItemDelegate和QAbstractItemDelegate::editorEvent
處理click事件。 您可以從QModelIndex中檢索單元格中的數據。 在C++中是這樣的:
class ItemDelegate: public QItemDelegate
{
public:
ItemDelegate(ContextMenuHandler *const contextMenu, QObject *const parent)
: QItemDelegate(parent)
, m_contexMenu(contextMenu)
{
}
bool editorEvent(
QEvent * event,
QAbstractItemModel * model,
const QStyleOptionViewItem & option,
const QModelIndex & index)
{
if((event->type()==QEvent::MouseButtonPress) && index.isValid())
{
QMouseEvent *const mouseEvent = qobject_cast<QMouseEvent>(event);
if(mouseEvent && (mouseEvent->button()==Qt::RightButton))
{
return m_contexMenu->showContextMenu(mouseEvent->pos(), index);
}
}
}
ContextMenuHandler *const m_contextMenu;
};
treeWidget->setItemDelegate(new ItemDelegate(contextMenuHandler,treeWidget));
0
我使用的是這樣的:
self.widget_layers.setContextMenuPolicy(Qt.ActionsContextMenu)
removeLayerAction = QAction("Remove selected layer", self)
self.connect(removeLayerAction, SIGNAL('triggered()'), self.layers_widget_controller.remove_selected_layer)
,並檢查該項目由觸發信號:
selected_item = self.main_window.widget_layers.selectedItems()[0]
0
我做了新的信號/插槽的風格是什麼:
self.treeMenu = QMenu()
self.treeAction = QAction('print', self.treeMenu)
self.treeAction.triggered.connect(self.printTreeItem)
self.treeWidget.addAction(self.treeAction)
@pyqtSlot()
def printTreeItem(self):
print self.treeWidget.currentItem().text(0)
這將打開一個菜單,當你在你的treeWidget中單擊鼠標右鍵。如果您點擊「打印」,在您的控制檯中它將打印出當前焦點的項目,這是您右鍵單擊的項目。
注意:當前項目不是必需的選定項目,所選項目是您最近點擊的項目。
相關問題
- 1. 如何在QTreeWidget的上下文菜單中發送信號?
- 2. 在菜單項上調用android上下文菜單按
- 3. QTreeWidget右鍵菜單
- 4. Qt QTreeWidget上下文菜單:在其他o刪除項目下添加項目。
- 5. 上下文菜單actionUrl - 調用JSP
- 6. 調用NotifyIcon的上下文菜單
- 7. 調用其他菜單的上下文菜單
- 8. 重用上下文菜單
- 9. 如何在Android模擬器中調用上下文菜單
- 10. 上下文菜單
- 11. 上下文菜單
- 12. 在Selenium IDE中的「右鍵單擊」調出上下文菜單
- 13. 微調項目的上下文菜單
- 14. 調整Visio 2013上下文菜單
- 15. 如何在Android上調用上下文敏感菜單?
- 16. 在MVC5上點擊kendo上下文菜單調用視圖
- 17. 在qwidget上重新映射上下文菜單調用
- 18. GTK:定位上下文菜單項w.r.t上下文菜單
- 19. 添加上下文菜單或微調在選項菜單中的Android
- 20. 在WPF中生成上下文菜單
- 21. 在Windows中的上下文菜單項
- 22. 在上下文菜單中分組
- 23. 在Android中創建上下文菜單
- 24. 在JfxPane中創建上下文菜單
- 25. 行在android中的上下文菜單?
- 26. 在SherlockListFragment中充氣上下文菜單
- 27. 在Datagrid中添加上下文菜單
- 28. 添加菜單上下文菜單
- 29. jQuery的請留下調用右鍵上下文菜單
- 30. 如何調用swtboot中的上下文菜單
謝謝,這看起來相當漂亮:-)事件直接在項目中處理。 – gruszczy 2009-11-23 09:59:10
什麼是ContextMenuHandler?爲什麼需要? – Prady 2013-04-05 03:31:24