QT自定義右鍵選單
阿新 • • 發佈:2022-02-11
利用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"; }
最終實現效果