vs2019开发Qt5,QAction类的信号转到槽的实现技巧

vs2019开发Qt5,信号转到槽的实现技巧

使用vs2019开发Qt5时,无法像在Qt Creator中使用“转到槽”的命令。只能码代码连接信号与槽让我十分头疼。经过尝试,终于找到不错的技巧的能省去写connect的痛苦。这个技巧只在vs2019开发Qt5中使用过,至于其他版本尚未尝试和验证

方法:在主窗口类中声明的“转到槽”式的槽,严格采用“on_QAction对象名称_方法名称"的命名方式

例子如下:
1.新建一个名为test的QtGui项目
在这里插入图片描述
2.用Qt设计器打开ui文件
在这里插入图片描述
3.在菜单栏中添加File项,并添加actionNew, actionOpen, actionSave三个QAction对象
在这里插入图片描述在这里插入图片描述
4.将三个对象分别对应的“转到槽”方法,手动添加到主窗口类中。同时在方法的定义中用QMessageBox进行测试

test.h

private slots:
	void on_actionNew_triggered(); // 点击
	void on_actionOpen_Hovered(); // 错误命名
	void on_action_Save_triggered(); // 错误命名

test.cpp

#include <qmessagebox.h>

void test::on_actionNew_triggered()
{
	QMessageBox msgBox;
	msgBox.setText(tr("New"));
	msgBox.exec();
}

void test::on_actionOpen_Hovered()
{
	QMessageBox msgBox;
	msgBox.setText(tr("Open"));
	msgBox.exec();
}

void test::on_action_Save_triggered()
{
	QMessageBox msgBox;
	msgBox.setText(tr("Save"));
	msgBox.exec();
}

5.测试结果
当点击new标签时,弹出消息框显示“New”;对
其余标签操作时,无反应

6.对照试验:当把两个命名格式错误的函数名称改正后,即

void on_actionOpen_hovered(); // H改为h
void on_actionSave_triggered(); // action_Save改为actionSave

当鼠标悬浮在Open标签上时,弹出消息框显示“Open”;
当点击Save标签时,弹出消息框显示“Save”

总结:vs中无法使用“转到槽”命令确实麻烦,但这个意外的发现让手动做槽的过程方便许多,今后只需要通过Qt手册查询QAction的类方法,然后按照“on_QAction对象名称_方法名称"的命名方式定义槽函数就行了,也就多写两行代码的事(比起习惯了vs再用Qt Creator开发而言,性价比实在太高了)。

不过,对于子对话框类对象能否使用此方法我就不得而知了,目前尚未尝试过。但子对话框和主对话框的信号-槽编辑,已有现成且较好的方式,此处不再赘述。

备注:这个意外的发现可能是Qt5某个特性,以后有机会也许能直接在Qt手册里找到官方说明,现在先用着

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值