当前位置: 代码迷 >> QT开发 >> Qt信号与槽的有关问题
  详细解决方案

Qt信号与槽的有关问题

热度:55   发布时间:2016-04-25 04:43:19.0
Qt信号与槽的问题,求高手指教
C/C++ code
编译通过,运行后 出错提示:[root@heiying edu_client]# ./edu_client Object::connect: No such signal QRadioButton::toggled(studentRadioButton->isChecked())根据void  toggled ( bool checked ) 这个定义,这个样应该可以啊???请高手指教请问要如何修改程序 ?????下面是部分程序:QRadioButton *studentRadioButton = new QRadioButton("学生", this);studentRadioButton->setChecked (true);connect(studentRadioButton, SIGNAL(toggled(studentRadioButton->isChecked())),            this, SLOT(setStudentFlag()));void Login::setStudentFlag(void){    QMessageBox::about(this,"about","11111");}Qt 4.8.2手册中QAbstractButton 类 (QRadioButton Inherits QAbstractButton)Signalsvoid  clicked ( bool checked = false ) void  pressed () void  released () void  toggled ( bool checked ) 


------解决方案--------------------
还是找本书先看看吧。
Qt控件的信号,是已经存在的,你只要写一个槽和信号connect起来。
信号的参数是Qt输出的,是传给槽的。
信号和槽参数顺序要对应,信号的参数可以比槽多。参数只写类型(int ,QRect)。
------解决方案--------------------
应该写参数类型,不要写具体的值
connect(studentRadioButton, SIGNAL(toggled(bool)),
this, SLOT(setStudentFlag()));

也就是说,你只能写参数类型bool或int之类的,不能写具体的参数true或false或1、2、3之类的,因为连接的时候只是确定参数类型,具体的数值是程序运行后传进去的
------解决方案--------------------
2楼正解不能直接传参,只能写参数类型。信号的参数类型,和槽函数的参数类型一一对应才能正确传递
。其实这类问题书上写的很明白,QT文档里面也有说明,直接看QT DEMO吧。
  相关解决方案