我是用 tableView实现的。
在初始化是定义
m_tableView->setContextMenuPolicy(Qt::CustomContextMenu);
//右键菜单在tableview才有效
connect(m_tableView,SIGNAL(customContextMenuRequested(const QPoint &)),this,SLOT(slotTableViewMenu(const QPoint&)));
在函数中实现
void MainWindow::slotTableViewMenu(QPoint postion)
{
Q_UNUSED(postion);
QModelIndex index=m_tableView->currentIndex();
// qDebug()<<"tableview pop menu";
if (index.isValid()){
// createPopMenu();
pop_menu = new QMenu();
action_insertRow = new QAction(this);
action_appendRow = new QAction(this);
action_deleteRow = new QAction(this);
action_insertRow->setText(QString("插入土层"));
action_appendRow->setText(QString("添加土层"));
action_deleteRow->setText(QString("删除土层"));
pop_menu->addAction(action_insertRow);
pop_menu->addAction(action_appendRow);
pop_menu->addAction(action_deleteRow);
connect(action_insertRow,SIGNAL(triggered()),this,SLOT(on_insertBtn_clicked()));
connect(action_appendRow,SIGNAL(triggered()),this,SLOT(on_addBtn_clicked()));
connect(action_deleteRow,SIGNAL(triggered()),this,SLOT(on_delBtn_clicked()));
pop_menu->move(cursor().pos());
pop_menu->show();
}
}