问题描述
QRadioButton connect后槽函数未被执行:
QRadioButton相关声明:
QRadioButton *UIRadioButton_XYZ,*UIRadioButton_PVR;
QRadioButton相关定义:
UIRadioButton_XYZ = new QRadioButton("XYZ");UIRadioButton_PVR = new QRadioButton("PVR");connect(UIRadioButton_XYZ, SIGNAL(clicked()), this, SLOT(operatingButtonsClicked_XYZ()));connect(UIRadioButton_PVR, SIGNAL(clicked()), this, SLOT(operatingButtonsClicked_PVR()));
槽函数:
void Widget::operatingButtonsClicked_XYZ()
{qDebug() << "XYZ";UIStartLiEd_X->setEnabled(false);UIStartLiEd_Y->setEnabled(false);UIStartLiEd_Z->setEnabled(false);UIStartLiEd_P->setEnabled(true);UIStartLiEd_V->setEnabled(true);UIStartLiEd_R->setEnabled(true);
}void Widget::operatingButtonsClicked_PVR()
{qDebug() << "PVR";UIStartLiEd_X->setEnabled(true);UIStartLiEd_Y->setEnabled(true);UIStartLiEd_Z->setEnabled(true);UIStartLiEd_P->setEnabled(false);UIStartLiEd_V->setEnabled(false);UIStartLiEd_R->setEnabled(false);
}
声明的时候也保证了两个槽函数实在priviate slots下面的,按理说应该没有问题,但实际点击的时候依然无法执行
解决方法
问题在于没有定义QButtonGroup将两个QRadioButton加入其中,QT机制无法链接到槽函数。
解决方法:
operatingModeGroup = new QButtonGroup(this);operatingModeGroup->addButton(UIRadioButton_XYZ, 1);operatingModeGroup->addButton(UIRadioButton_PVR, 2);