Qt 中Treewidget添加右键菜单
生活随笔
收集整理的這篇文章主要介紹了
Qt 中Treewidget添加右键菜单
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在Qt+VS2005下,使用slot函數customContextMenuRequested(QPointpos)實現Treewidget的右鍵菜單欄。
1、在ui編輯界面中,右擊QTreeWidget--> Connect Signal-->選擇customContextMenuRequested(QPoint),添加slot函數。
在屬性設置中,將contextMenuPolicy屬性要設置為:CustomContextMenu,這步不能忘記,否則右鍵無反應。
2、為Treewidget添加節點,通過setData()來為每個節點賦予不同的鍵值。
QTreeWidgetItem *root; root = new QTreeWidgetItem(ui->treeWidget, QStringList(QString("Connection"))); QVariant var0(0); root->setData(0,Qt::UserRole,var0);3、在slot函數中使用itemAt()函數獲取當前被點擊的節點,然后為不同的節點添加不同的菜單。
void MainWindow::on_treeWidget_customContextMenuRequested(QPoint pos) {QTreeWidgetItem* curItem=ui->treeWidget->itemAt(pos); //獲取當前被點擊的節點if(curItem==NULL)return; //這種情況是右鍵的位置不在treeItem的范圍內,即在空白位置右擊QVariant var = curItem->data(0,Qt::UserRole);if(0 == var) //data(...)返回的data已經在之前建立節點時用setdata()設置好 {QMenu *popMenu =new QMenu(this);//定義一個右鍵彈出菜單 popMenu->addAction(ui->action_newDB);//往菜單內添加QAction 該action在前面用設計器定義了popMenu->addAction(ui->action_openDB);popMenu->addAction(ui->action_delDB);popMenu->exec(QCursor::pos());//彈出右鍵菜單,菜單位置為光標位置 }else{QMenu *popMenu =new QMenu(this);//定義一個右鍵彈出菜單 popMenu->addAction(ui->action_newTable);//往菜單內添加QAction 該action在前面用設計器定義了popMenu->addAction(ui->action_openTable);popMenu->addAction(ui->action_designTable);popMenu->exec(QCursor::pos());//彈出右鍵菜單,菜單位置為光標位置 } }?
參考:http://blog.csdn.net/moxiaomomo/article/details/6542683
?
轉載于:https://www.cnblogs.com/liuyunfeifei/archive/2012/12/07/2807654.html
總結
以上是生活随笔為你收集整理的Qt 中Treewidget添加右键菜单的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎么打开电脑版QQ游戏的游戏邀请通知消息
- 下一篇: 团队阅读——怎样学习软件工程