및 QAbstractItemDelegate::editorEvent
에 클릭 이벤트를 처리합니다. QModelIndex에서 셀의 데이터를 검색 할 수 있습니다. C에서 는 같을 것이다 ++ : 당신은 당신의 treeWidget 내에서 마우스 오른쪽 단추로 클릭 할 때
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)
이 메뉴를 열 것입니다 : 나는 새로운 신호/슬롯 스타일로 무슨 짓을
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));
감사합니다. 매우 귀엽습니다 .- 이벤트가 항목에서 직접 처리되었습니다. – gruszczy
ContextMenuHandler 란 무엇입니까? 왜 필요한가요? – Prady