程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> 關於C >> QT生成右鍵的示例

QT生成右鍵的示例

編輯:關於C


要在某一種窗體內添加右鍵菜單欄,比如在QTreeWidget中添加,

可以用到slot函數customContextMenuRequested(QPoint pos)。

 

如果是在Qt Creator中,則操作過程為:右擊QTreeWidget-->go to slot--

-->選擇customContextMenuRequested(QPoint pos)。

 

然後,在新建的customContextMenuRequested(QPoint pos)函數中便可以實現具體的菜單欄了。

 

為了判斷右鍵點擊的位置,即點即不同的item節點,會出現不同的右鍵菜單,我們可以用API中itemAt()函數實現。

而為了給每個節點賦予不同的鍵值,可以通過setData()來實現。

 

我在TreeWidget中添加右鍵菜單的實現代碼:

 

 


 

 

建立TreeWidget根節點的代碼實現:


 


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


void MainWindow::on_treeWidget_customContextMenuRequested(QPoint pos)  
{  
    QTreeWidgetItem* curItem=ui->treeWidget->itemAt(pos);  //獲取當前被點擊的節點  
    if(curItem==NULL)return;           //這種情況是右鍵的位置不在treeItem的范圍內,即在空白位置右擊  
    if(0==curItem->data(0,Qt::UserRole))      //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());//彈出右鍵菜單,菜單位置為光標位置  
    }  
}  


注意:

還要在MainWindow的構造函數中加入:

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

否則不會出現右鍵!!

 laokaddk 的BLOG

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved