我也刚接触Qt,我说一下我的做法。
使用信号和槽,自定义槽函数,两个QTreeWidget的话就定义两个,具体到Item则在槽函数里判断,槽函数里再显示菜单。
connect(ui->treeWidget1,SIGNAL(itemPressed(QTreeWidgetItem *, int)),
this,SLOT(SlotItemClicked(QTreeWidgetItem *, int)));
//槽函数
void MainWindow::SlotItemClicked(QTreeWidgetItem *item, int column)
{
if (qApp->mouseButtons() == Qt::LeftButton)
{
return;
}
if (qApp->mouseButtons() == Qt::RightButton)
{
if( 1 ) //条件自己加
{
showMenu1();
}
}
}
//菜单
void MainWindow::showMenu1()
{
QMenu menu(ui->treeWidget1);
QAction *add_action = menu.addAction(tr("打开"));
QAction *add_remove = menu.addAction(tr("关闭"));
menu.exec(QCursor::pos());
}