linux下QT界面的treewiget控件的右键菜单的实现

关于QTreeWidget右键菜单的实现。步骤如下:

首先建立信号和槽函数的关联。 

 

 

选择图中高亮的函数,会自动生成槽函数的模板

 

在主窗口的初始化代码中加上这一句,QTreeWidget控件使用自定义菜单。

  
  
  
  
  1. ui->titleList->setContextMenuPolicy(Qt::CustomContextMenu);  

 

这里是槽函数的具体实现代码(说明见注释):

  
  
  
  
  1. void MainWindow::on_channelTree_customContextMenuRequested(QPoint pos) 
  2.     QMenu *popMenu =new QMenu(this);//定义一个右键弹出菜单 
  3.     QTreeWidgetItem* curItem=ui->channelTree->itemAt(pos);  //获取当前被点击的节点 
  4.     if(curItem==NULL){           //右键的位置不在treeItem的范围内,即在空白位置右击 
  5.         popMenu->addAction(ui->actionAdd_class);//往菜单内添加QAction 
  6.  
  7.         popMenu->exec(QCursor::pos());//弹出右键菜单,菜单位置为光标位置 
  8.     } 
  9.     else if(0==curItem->data(0,Qt::UserRole)){ 
  10.         popMenu->addAction(ui->actionAdd_channel); 
  11.         popMenu->exec(QCursor::pos());//弹出右键菜单,菜单位置为光标位置 
  12.         uiAddChannel.comboBox->setItemText(0,curItem->text(0)); //确定添加channel的分类 
  13.     } 
  14.     else
  15.         popMenu->addAction(ui->actionDelete_channel);//往菜单内添加QAction 
  16.         popMenu->exec(QCursor::pos());//弹出右键菜单,菜单位置为光标位置 
  17.     } 

 

你可能感兴趣的:(linux,QTreeWidget)