Qt右键弹出菜单+图标

ui->tableWidget_gprs->setContextMenuPolicy(Qt::CustomContextMenu);    //这个很重要,要在构造函数里面设置完(此部件定义这种菜单

 

this->connect(ui->tableWidget_gprs,SIGNAL(customContextMenuRequested(QPoint)),this,SLOT(slotShowContextmenu(QPoint)));   //信号和槽函数连接

 

    QMenu *RBmenu;
    QAction *EditAction;
    QAction *DelAction;
    QAction *SaveAction;
 


void GprsHelp::slotShowContextmenu(QPointp)

{
    CreateMenu();
}

 void GprsHelp::CreateMenu()
 {
     RBmenu = new QMenu(ui->tableWidget_gprs);

     EditAction = RBmenu->addAction("编辑");

     DelAction = RBmenu->addAction("删除");

     QIcon icon = QIcon(":/save.ico");  //加载图片
      SaveAction = RBmenu->addAction(icon,"保存");




     connect(EditAction, SIGNAL(triggered(bool)), this, SLOT(sloMenu_Edit()));
     connect(DelAction, SIGNAL(triggered(bool)), this, SLOT(sloMenu_Del()));
     connect(SaveAction, SIGNAL(triggered(bool)), this, SLOT(slotMenu_Save()));


     RBmenu->exec(QCursor::pos());//在当前鼠标位置显示


 }
 


 

网友资料:

Qt中的部件的弹出菜单(ContextMenu),依据ContextMenuPolicy的值的不同,有四种形式:
一、默认菜单
此时,ContextMenuPolicy的值为Qt::DefaultContextMenu,这是默认值,其将显示部件定义的默认菜单
二、无菜单
此时,ContextMenuPolicy的值为Qt::NoContextMenu
三、由Action定义菜单
此时,ContextMenuPolicy的值为Qt::ActionsContextMenu,要为此部件定义这种菜单,很简单,只要把已经定义好的Action部件插入到要显示此菜单的部件中,部件将自动按顺序显示菜单。
QWidget::addAction(QAction *action);
四、自定义菜单
此时,ContextMenuPolicy的值为Qt::CustomContextMenu,这回,有两种方式来定义菜单,一种是响应
customContextMenuRequested()这个signal,在响应的槽中显示菜单(QMenu的exec()方法)。第二种是需要从这个部件的类中派生一个类,重写contextMenuEvent()这个函数显示菜单(QMenu的exec()方法显示)。

 

 
 

你可能感兴趣的:(Ivan@_QT专栏)