QTreewidget有一个信号继承自QWidget的信号void QWidget::customContextMenuRequested(const QPoint &pos);我们来看看官方介绍:
简单翻译一下:当widget的 contextMenuPolicy即上下文菜单属性是 Qt::CustomContextMenu,并且用户已request widget上的上下文菜单时(也就是点了右键),会发出此信号。位置 pos 是widget接收到的上下文菜单事件的位置(也就是鼠标位置)。
所以我们要做的就是
1.设置contextMenuPolicy属性为CustomContextMenu
2.绑定信号并实现槽函数;
直接在界面设置。右键转到槽,设置contextMenuPolicy属性
当右键了treeWidget的QTreeWidgetItem节点时才弹出菜单文章来源:https://www.toymoban.com/news/detail-587077.html
void MainWindow::on_treeWidget_customContextMenuRequested(const QPoint &pos)
{
QTreeWidgetItem* curItem=ui->treeWidget->itemAt(pos);
if(curItem !=nullptr)
{
QMenu *popMenu = new QMenu(this);
QAction *actionNew = new QAction("新增(N)",this);
connect(actionNew, &QAction::triggered, this, &MainWindow::deal_actionNew_triggered);
popMenu->addAction(actionNew);
popMenu->exec(QCursor::pos());
delete popMenu;
delete actionNew;
}
}
效果如下
文章来源地址https://www.toymoban.com/news/detail-587077.html
到了这里,关于QTreewidget右键菜单功能实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!