您的位置:首页 > 运维架构 > Linux

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

2013-05-09 00:27 351 查看
关于QTreeWidget右键菜单的实现。步骤如下:

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





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





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

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


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

void MainWindow::on_channelTree_customContextMenuRequested(QPoint pos)
{
QMenu *popMenu =new QMenu(this);//定义一个右键弹出菜单
QTreeWidgetItem* curItem=ui->channelTree->itemAt(pos);  //获取当前被点击的节点
if(curItem==NULL){           //右键的位置不在treeItem的范围内,即在空白位置右击
popMenu->addAction(ui->actionAdd_class);//往菜单内添加QAction

popMenu->exec(QCursor::pos());//弹出右键菜单,菜单位置为光标位置
}
else if(0==curItem->data(0,Qt::UserRole)){
popMenu->addAction(ui->actionAdd_channel);
popMenu->exec(QCursor::pos());//弹出右键菜单,菜单位置为光标位置
uiAddChannel.comboBox->setItemText(0,curItem->text(0)); //确定添加channel的分类
}
else{
popMenu->addAction(ui->actionDelete_channel);//往菜单内添加QAction
popMenu->exec(QCursor::pos());//弹出右键菜单,菜单位置为光标位置
}
}


本文出自 “大工软院的技术生活” 博客,请务必保留此出处http://webcrawler.blog.51cto.com/3663163/1196093
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: