Qt Treewidget添加右鍵菜單


在Qt+VS2005下,使用slot函數customContextMenuRequested(QPointpos)實現Treewidget的右鍵菜單欄。

1、在ui編輯界面中,右擊QTreeWidget--> Connect Signal-->選擇customContextMenuRequested(QPoint),添加slot函數。

  在屬性設置中,將contextMenuPolicy屬性要設置為:CustomContextMenu,這步不能忘記,否則右鍵無反應。

2、為Treewidget添加節點,通過setData()來為每個節點賦予不同的鍵值。

1 QTreeWidgetItem *root; 2 root = new QTreeWidgetItem(ui->treeWidget, QStringList(QString("Connection"))); 3 QVariant var0(0); 4 root->setData(0,Qt::UserRole,var0);

3、在slot函數中使用itemAt()函數獲取當前被點擊的節點,然后為不同的節點添加不同的菜單。

 1 void MainWindow::on_treeWidget_customContextMenuRequested(QPoint pos)  2 {  3     QTreeWidgetItem* curItem=ui->treeWidget->itemAt(pos);  //獲取當前被點擊的節點
 4     if(curItem==NULL)return;           //這種情況是右鍵的位置不在treeItem的范圍內,即在空白位置右擊
 5     QVariant var = curItem->data(0,Qt::UserRole);  6     if(0 == var)      //data(...)返回的data已經在之前建立節點時用setdata()設置好 
 7  {  8        QMenu *popMenu =new QMenu(this);//定義一個右鍵彈出菜單
 9 
10        popMenu->addAction(ui->action_newDB);//往菜單內添加QAction 該action在前面用設計器定義了
11        popMenu->addAction(ui->action_openDB); 12        popMenu->addAction(ui->action_delDB); 13        popMenu->exec(QCursor::pos());//彈出右鍵菜單,菜單位置為光標位置
14  } 15     else
16  { 17         QMenu *popMenu =new QMenu(this);//定義一個右鍵彈出菜單
18 
19         popMenu->addAction(ui->action_newTable);//往菜單內添加QAction 該action在前面用設計器定義了
20         popMenu->addAction(ui->action_openTable); 21         popMenu->addAction(ui->action_designTable); 22         popMenu->exec(QCursor::pos());//彈出右鍵菜單,菜單位置為光標位置
23  } 24 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM