在QT编程中,我想在主菜单点菜单时直接触发一个action,而不是把action作为他的子菜单去触

2025-03-02 14:26:13
推荐回答(3个)
回答1:

  1. 按照你所说,你只是想要主菜单点击时,就会调用一段程序吧,那么你可以不用action,如果说你这action在别的地方没用的话。

  2. 如上所说,你应该重写QMenu(也就是你的主菜单)的mousePressEvent事件,也就是鼠标按下事件,然后在这个事件调用你想要的方法,或者直接在这个事件里面执行你的操作。

  3. 如果不懂,百度“Qt事件”,比如Qt鼠标单击事件什么的,看看如何重写相关事件。

回答2:

这样可以
connect(ui->menu95563, SIGNAL(aboutToHide()), this, SLOT(menuTriggered()));

connect(ui->menu95563, SIGNAL(aboutToShow()), this, SLOT(menuTriggered()));
我之前想用
void triggered ( QAction * action )
但是这个要双击才能实现 用hide和show信号连接同一个槽函数 即可每次点击都执行

回答3:

使用pyqt5,与Qt类似,在Qmenu类中添加Action,在menubar设置时初始化Qaction而不是Qmenu。

添加action

把原先的代码替换成第二行即可