QTreeView의 하위 클래스가 있습니다. 특정 항목에 대한 사용자 지정 컨텍스트 메뉴가 필요합니다. I 컨텍스트 메뉴 작성의 위치를 찾기 'onCustomContextMenu "슬롯 함수에서QTreeView의 사용자 지정 컨텍스트 메뉴에 대한 QStandardItem 가져 오기
setContextMenuPolicy(Qt::CustomContextMenu);
QObject::connect(this, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(onCustomContextMenu(const QPoint &)));
지금 : I 컨텍스트 메뉴 정책을 설정이하세요 QTreeView의 서브 클래스의 생성자의 신호"customContextMenuRequested "를 연결하려면 QPoint로 이 위치에 표시된 QStandardItem을 얻고 싶습니다.
void t_my_tree_view::onCustomContextMenu(const QPoint &point)
{
QModelIndex index = this->indexAt(point);
QStandardItem* item_ptr = m_item_model->item(index.row, index.column());
}
m_item_model이 QTreeview의 서브 클래스에서 모델입니다 QStandardItemModel에 대한 포인터입니다 : 나는이 시도.
문제는 내가 얻은 "item_ptr"이 때때로 잘못되었거나 NULL이라는 것입니다. 내 모델은 다음과 같습니다 경우는 NULL이됩니다 : | -item_on_level_1
| -item_on_level_2
| -item_on_level_2
|
invisibleRootItem
-item_on_level_2 < -이 오른쪽 클릭이
이었다 항목입니다 | -item_on_level_2
내가 뭘 잘못하고 있니? 내가 rightclick 항목을 어떻게 얻을 수 있습니까?