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

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

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

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

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

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)

QAction是继承QObject的一个类。

例如QActionGroup就是QAction的一个继承类。

QAction类抽象出一个用户UI动作(action),该动作可出现在菜单和工具栏上。

向用户提供一个action时,可以调用addTo()添加到菜单或者工具栏上。例如:

QPopupMenu* popup = new QPopupMenu

QAction* yourAction= new QAction

yourAction->setText( "YourAction" )

yourAction->addTo( popup )


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存