Qt QMenu 右键菜单怎么用

设置QWidget中setContextMenuPolicy(Qt::ContextMenuPolicy)
直接使用QWidget::addActiont(QAction)即可
大致流程
在QWidget派生类的构造函数中
1.setContextMenuPolicy(Qt::ContextMenuPolicy);
2.auto action1 = new QAction(“新建”,this);
3.connect(action1,SIGNAL(trriged()),ths,SLOT(xxxx));
4.this->addaction(action1);
5.添加action2…3…4…
不使用QWidet的派生类,也可以在外部使用类似的方式
这种方式的优点是不用使用派生类也可以创建右键菜单
1.auto widget1 = new QWidget;
2.widget1->setContextMenuPolicy(Qt::ContextMenuPolicy);
3.auto action1 = new Action(“新建”,widget1);
4.connect…
5.widget1->addAction(action1);
6.创建添加其他action
可以在contextMenuEvent中创建右键菜单,该事件由右键点击触发
用派生类一般使用事件方法好一点
在QWidget派生类的contextMenuEvent(QContextEvent* event)中
1.auto menu = new QMenu(this);
2.auto action1 = new QAction(“新建”,this);
3.connect(action1,SIGNAL(trriged()),ths,SLOT(xxxx));
4.menu->addaction(action1);
5.添加action2…3…4…
6.menu->move(cursor().pos());//移动到鼠标点击位置
(或者menu.exec(event->screenPos());)
7.menu->show();
在鼠标事件中判断右键点击来处理
可以在派生类中添加私有成员QMenu* menu,并定义一些action,在派生类的派生类中在定义添加一些action并显示menu,这样就可以灵活的在派生类的基础上再添加右键菜单的选项了

你可能感兴趣的:(Qt)