VS开发QT项目,手写按钮槽函数避坑

VS开发QT项目,手写按钮槽函数避坑

由于最近开发需要在VS2017上配置QT开发环境,进行QT项目的开发,之前从来没有这样使用过,在此记一些坑。

1、QT Creator按钮槽函数

QT的槽函数是非常方便的,使用QT Creator可以自动生成代码,方便快捷。但是代码可读性不强,一些连接方面的信息都被隐藏了。由于之前一直使用QT Creator,所以其实还是挺喜欢这种方式的。具体操作是在控件界面拖动一个按钮放在设计界面。
QT Creator中的界面设计页
这时我们用鼠标右键PushButton按钮,会有一个转到槽的选择。点击之后在代码页会自动生成相应的代码,我们只需要在该按钮的槽函数中添加响应事件。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

但是! 在VS中打开界面,再右键按钮时没有转到槽这个选项,这就需要我们自己手写槽函数与连接。

2、VS中添加按钮槽函数

其实手写槽函数跟在QT Creator中差不多,只不过多了一个连接的过程。
第一步,跟在QT Creator中一样,添加槽函数。

//.h文件
//添加槽函数声明
private slots:
	void pushbutton_slots();
//.cpp文件
//添加槽函数定义
void QtFileTest_1::pushbutton_slots()
{
	//	添加需要的操作
}

第二步就是最重要的连接部分,在QT中常使用connect来绑定信号槽,也是最容易出错的地方。
首先是一种比较老的方式:

//.cpp文件
connect(ui.pushButton, SIGNAL(clicked()), this, SLOT(pushbutton_slots));

这种方式在VS中,在点击按钮之后并不能触发槽函数,醉了醉了!
第二种,在QT5中换了一种方式:

//.cpp文件
connect(ui.pushButton, &QPushButton::clicked, this, &QtFileTest_1::pushbutton_slots);

这中方式可以比较清晰的看出槽函数在哪个类中,在VS中也能正常使用。
但是!千万不要两种方式混合使用

3、踩坑

当你两种方式混合使用的时候,是会报错的!
“Signal and slot arguments are not compatible”

还有看到一些博客,在使用带参数的信号槽函数时,还是用旧的方式,但是好像VS中不能使用,以后需要使用再说吧。具体关于信号槽的使用可以去看相关博客。

  • 11
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值