QT 顶层菜单事件响应的一种解决方法

在QT项目中,处理无子菜单的顶层菜单点击事件通常是个挑战。文章描述了一种方法,通过在ui_XXX.h文件中添加QAction,然后在UI设置函数中插入这个动作到菜单栏,并手动连接槽函数来实现响应。具体操作包括创建QAction对象,设置对象名,将动作添加到菜单栏以及在WSPipe类中定义相应的槽函数来处理点击事件。
摘要由CSDN通过智能技术生成

项目中我们有时会遇到无子菜单的顶层菜单需要响应单击事件,查找了半天也没找到好方法,参考https://blog.csdn.net/huangxilong79/article/details/88953018的"QT顶层菜单事件响应”,照着文章中的做最终没有解决,通过研究ui_XXX.h(XXX为你建立的ui文件名)文件后,最终找到一个方法,譬如我建立的ui类为WSPipe,顶部菜单名称为计算器,方法如下:
在ui_XXX.h文件进行如下修改:
class Ui_WSPipe
{
public:
/**原有代码**/
    QAction* calculate;//新增代码
void setupUi(QMainWindow *WSPipe)//原有UI设置函数
{
    /**原有代码**/
    calculate= new QAction(QStringLiteral("计算器"), WSPipe);//新增代码
    calculate->setObjectName(QStringLiteral("calculate"));//新增代码
    menubar->addAction(calculate);//新增代码,当在menubar的最后插入新子项使用addAction()
    menubar->insertAction(menu_2,calculate);//新增代码,当在menubar的menu_2菜单前插入新子项使用insertAction(),与addAction()使用一个即可
    retranslateUi(WSPipe);/**原有代码**/
    QMetaObject::connectSlotsByName(WSPipe);/**原有代码**/
}

在XXX.h文件进行如下修改:
class WSPipe : public QMainWindow
{
    /**原有代码**/
private slots:/**原有代码**/
    void on_calculate_triggered();//新增代码,手动连接槽函数

 private:/**原有代码**/
    Ui::WSPipe ui;/**原有代码**/
};

在XXX.cpp文件进行如下修改:
增加响应函数:
void WSPipe::on_calculate_triggered()
{
    //点击该菜单的操作内容。
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值