利用QMenu和QAction可以实现非常实用的右键菜单功能。具体实现思路如下:
1、在xxx.h文件中添加如下头文件
#include <QMenu>
#include <QContextMenuEvent>
#include <QDebug> //打印输出,方便调试
2、在xxx.h文件中定义动作对象
public:
QAction *add;
QAction *del;
3、在xxx.h文件中声明私有方法
private:
void contextMenuEvent(QContextMenuEvent *e);
4、在xxx.h文件中增加右键点击后动作槽声明
private slots:
void add_line();
void del_line();
5、在xxx.cpp文件的构建函数中实例化动作对象
add = new QAction("Add Train",this);
connect(add,SIGNAL(triggered()),this,SLOT(add_line()));
del =new QAction("Delete Train",this);
connect(del,SIGNAL(triggered()),this,SLOT(del_line()));
6、在xxx.cpp文件中实现右键的事件
void MainWindow::contextMenuEvent(QContextMenuEvent *e)
{
QMenu *menu = new QMenu();
menu->setFixedWidth(160); //菜单栏显示宽度
menu->addAction(add);
menu->addAction(del);
menu->exec(e->globalPos());
delete menu;
}
7、在xxx.cpp文件中实现点击后的处理
void MainWindow::add_line()
{
//put your code
qDebug()<<"Add Train"; //将选中的事件使用qDebug打印
}
void MainWindow::del_line()
{
//put your code
qDebug()<<"Delete Train";
}
最终实现效果