【Qt】Designer中添加菜单及槽函数

   在使用Qt开发GUI程序时,通常会采用Qt designer来设计和布局程序的UI界面,通过简单的拖动和布局即可完成。相比手搓布局,要简单高效的多。但在Qt窗口类中,QMenuBar和QToolBar中并不能放置按钮或选项类的控件,需要向其中添加QAction来实现与按钮类似的功能。
   在本文中仅讲述通过Designer添加菜单及槽函数的操作。对于Designer添加菜单,有以下两种方式:
   首先,可以在MainWindow中的“在这里输入”添加需要添加的菜单。比如File菜单以及Open和Save子菜单。然后在“动作编辑”其中添加相应的快捷键即可。如图1所示。注意在添加菜单之后按“Enter”键。
Alt

图1 添加菜单

   其次,可先在“动作编辑”其中,编辑好需要添加的QAction,然后拖到相应的菜单下即可。比如在动作编辑其中新建actionOpen和actionSave两个动作,然后将两个动作拖动到File菜单下。
Alt

图2 编辑动作

   关于通过Designer添加菜单的槽函数,可以在空白界面中,单击右键,选择“改变信号/槽”(如图3-(a)所示),然后在***的信号/槽界面中添加菜单的槽函数(如图3-(b)所示)。之后便可在信号/槽编辑器中,添加并连接相应的信号和槽函数即可(如图4所示)。

Alt

图3 添加槽函数

Alt

图4 编辑信号/槽

   若觉得这种添加槽函数的方式比较繁琐,可在代码中直接连接Action的Triggered()信号与相应的槽函数即可。

个人声明:
   以上内容,纯属个人观点,不喜勿喷。未经本人同意,不得私自转载。博客中出现的代码仅供学习参考,不得有其他用途。若有大佬见此拙作,还望指点一二。有好的建议或者文中存在纰漏,欢迎留言,也可邮箱联系:yxyx_0212@163.com

  • 18
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
Qt,右键菜单可以通过QMenu和QAction来实现。要让子菜单能够响应函数,可以使用QAction的triggered信号和函数进行连接。 首先,在Qt Designer创建一个QMenu,并添加一些QAction作为子菜单。然后,通过右键菜单策略(例如在QWidget上设置setContextMenuPolicy为Qt::CustomContextMenu)将菜单与QWidget相关联。 接下来,在QWidget的构造函数,创建QMenu和QAction,并将它们添加到QMenu。然后,使用connect()函数将QAction的triggered信号与函数进行连接。函数的实现可以根据需要进行自定义。 以下是示例代码: ```cpp // 创建菜单和子菜单 QMenu* menu = new QMenu(this); QAction* action1 = new QAction("子菜单项1", this); QAction* action2 = new QAction("子菜单项2", this); // 将子菜单添加菜单 menu->addAction(action1); menu->addAction(action2); // 设置右键菜单策略 this->setContextMenuPolicy(Qt::CustomContextMenu); // 创建右键菜单动作 QAction* menuAction = new QAction("右键菜单", this); connect(menuAction, &QAction::triggered, this, &MyWidget::showContextMenu); // 将菜单动作添加到QWidget this->addAction(menuAction); // 显示函数 void MyWidget::showContextMenu() { QPoint cursorPos = QCursor::pos(); menu->exec(cursorPos); } // QAction的triggered信号连接的函数 void MyWidget::onActionTriggered() { // 处理子菜单项的点击事件 } ``` 在这个示例,当用户右键单击QWidget时,会显示一个右键菜单。当用户单击子菜单项时,将会调用onActionTriggered()函数进行处理。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值