QT自定义右键菜单
利用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"; }
最终实现效果