- 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吧。