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不可用

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

QAction类提供了抽象的用户界面action,这些action可以被放置在窗口部件中。

应用程序可以通过菜单,工具栏按钮以及键盘快捷键来调用通用的命令。由于用户期望每个命令都能以相同的方式执行,而不管命令所使用的用户界面,

这个时候使用action来表示这些命令就显得十分有用。

Actions可以被添加到菜单和工具栏中,并且可以自动保持在菜单和工具栏中的同步。例如,在一个字处理软件中,如果用户在工具栏中按下了Bold按钮,那么菜单中的Bold选项就会自动被选中。

Actions可以作为独立的对象被创建,但是我们也可以在构建菜单的时候创建它们;QMenu类包含了非常简便的方法用于创建适合用作菜单项的actions。

QAction可以包括一个图标,菜单文本,快捷键,状态文本,"What`s This"文本以及一个tooltip。这些内容的绝大部分都可以在构造函数中设置。也可以通过setIcon(),setIconText(),setShortCut(),setStatusTip(),setWhatsThis和SetToolTip()函数分别设置。对于菜单项,我们还可以通过

setFont()单独为它们设置font。

可以通过QWidget::addAction()或者是QGraphicsWidget::addAction()函数将Actions添加到窗口部件上。注意,只有将Actions添加到窗口部件上之后,我们才可以使用这些actions;当actions的快捷键是全局的时候,我们也必须先将actions添加到窗口部件上。

一旦QAction被创建了,那么就必须将它添加到相关的菜单和工具栏上,然后将它们链接到实现相应action功能的槽函数上。例如:

openAct = new QAction(QIcon(":/images/open.png"), tr("&Open..."), this)

openAct->setShortcuts(QKeySequence::Open)

openAct->setStatusTip(tr("Open an existing file"))

connect(openAct, SIGNAL(triggered()), this, SLOT(open()))

fileMenu->addAction(openAct)

fileToolBar->addAction(openAct)


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

原文地址:https://54852.com/bake/7873479.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存