使用自定义的信号和槽,需要注意以下几点: 1、类的声明和实现分别放在.h和.cpp文件中; 2、类声明中包含Q_OBJECT宏; 3、信号只要声明不要设计其的实现函数,否则会出现多次定义这个信号函数; 4、触发信号用emit关键字(emit getData(tran);); 5、自定义槽的实现与普通成员函数的实现一样。 6、用connect进行连接时,必须要使信号函数和槽函数,写的和定义的原型一样(没有参数就不能有参数,有参数就必须有相同的形参,否则连接失败) 例如 connect(wThread, SIGNAL(getData(TextAndNumber&)), this, SLOT(showData(TextAndNumber&))); 7、一般用connect连接时,其参数的发送者和接受着已经确定了其对象,所以一般信号函数和槽函数就不能再加限定对象类 如:serialThread::getData(TextAndNumber&),槽同样,就有可能连接失败 8:连接时信号和槽函数中只需要参数的类型,不要加形参,并且参数的形式必须一样(),否则不能连接成功 No such signal serialThread::sigsrData(TextAndNumber& tran) in ../dialog.cpp:269 例如: connect(wThread, SIGNAL(sigSrData(TextAndNumber&)),main_widget,SLOT(showEnvInfo(TextAndNumber& ))); 信号比槽函数的形参中少了一个空格,有可能都会出现上边提示的错误 9:声明槽函数时,前边必须加上限定字段(private,public等) 否则显示错误 private slots: void showTaskInfo(info_page mInfo);
qt编程信号和槽连接应注意的问题
最新推荐文章于 2025-02-08 16:31:44 发布