qt如何给menu的下拉菜单添加响应事件

qt如何给menu的下拉菜单添加响应事件,第1张

1、创建菜单里可以通过menuBar方法,这个方法好像是QWiget的方法

QMenuBar *mBar = menuBar()

2、添加菜单

QMenu * menu = mBar->addMenu("文件")

3、添加菜单项

QAction * action = menu->addAction("新建")

4、给QAction创建点击事件

connect(action ,&QAction::triggered ,this ,[=](){

//里面写点击后执行的函数就行

})

5、设置QAction不可用

主窗口MainWindow需要菜单栏QMenuBar及菜单QMenu来组成自身,一般应用程序的所有功能都能在菜单中找到。

它添加了很多动作QAction,并用自身组成了菜单栏QMenuBar上的菜单,当然也可用于基它地方,如上下文菜单等。

公有函数如下:

aboutToHide:此信号在菜单对用户隐藏之前发出。

aboutToShow:此信号在菜单显示给用户之前发出。

hovered:此信号在菜单动作突出显示时发出;该动作是导致信号发出的动作。通常用于更新状态信息。

triggered:此信号在触发此菜单中的 *** 作时发出。该动作是导致信号发出的动作。

通常,每个菜单动作的已触发信号连接到其自己的自定义槽,但有时您会希望将多个动作连接到单个槽,例如,当您有一组密切相关的动作时,例如“左对齐”、“中对齐”、“右对齐”。

注意:此信号是为层次结构中的主父菜单发出的。因此,只需要将父菜单连接到插槽;不需要连接子菜单。

静态成员函数,可用它将一些actions组合成一个菜单

它是主窗口存放菜单的地方。

在windows上可认为它就是那个大理石颜色的一栏

函数如下:

简单测试示例如下:

QMenu *pMenu = new QMenu(this)

    QAction *pTest1 = new QAction(QIcon("copy.ico"),"复制", this)

    QAction *pTest2 = new QAction("删除", this)

    QAction *pTest3 = new QAction("标记", this)

    QAction *pTest4 = new QAction("取消标记", this)

  //把QAction对象添加到菜单上

    pMenu->addAction(pTest1)

    pMenu->addAction(pTest2)

    pMenu->addAction(pTest3)

    pMenu->addAction(pTest4)

    //添加分隔线

    //pMenu->addSeparator()

    //设置点击后发送的数据

  // pTest1->setData(1)

    //连接鼠标右键点击信号

    connect(pTest1, &QAction::triggered, this, &sub::ClickCopy)

    connect(pTest2, &QAction::triggered, this, &sub::ClickDel)

    connect(pTest3, &QAction::triggered, this, &sub::Clicktink)

    connect(pTest4, &QAction::triggered, this, &sub::ClickDeltink)

    //在鼠标右键点击的地方显示菜单

    pMenu->exec(cursor().pos())

    //释放内存,若此处不手动释放,则必须等到程序结束时才都能释放

    QList list = pMenu->actions()

    foreach (QAction* pAction, list)

        delete pAction

    delete pMenu


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11824840.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存