C++ 如何映射到重载Qt插槽

C++ 如何映射到重载Qt插槽,c++,qt,qsignalmapper,C++,Qt,Qsignalmapper,我想重载Qt插槽,以便对QPushButton发出的clicked()信号作出反应,或者对QCheckBox发出的stateChanged(int)信号作出反应(因为仅选中复选框时没有信号发出) 这是我的两个插槽 void Widget::sendCom(QString data) { std::cout << "In scope of sendCom"<< std::endl; } void Widget::sendCom(QString data, int s

我想重载Qt插槽,以便对
QPushButton
发出的
clicked()信号作出反应,或者对
QCheckBox
发出的
stateChanged(int)
信号作出反应(因为仅选中复选框时没有信号发出)

这是我的两个插槽

void Widget::sendCom(QString data)
{
    std::cout << "In scope of sendCom"<< std::endl;
}
void Widget::sendCom(QString data, int state)
{
    std::cout << "In scope of overloaded sendCom: " << std::endl;
}

使用
widget->createCheckBox(SLOT(QString,int),data)
我也想将ChechBox的状态传递给重载的
widget::sendCom(QString data,int state)
。如何进行映射?

根据文档
QSignalMapper
仅管理无参数信号。您可以从
QCheckBox
派生一个新类,在该类中,您将
stateChanged(int)
信号连接到类中相应的插槽,在该插槽中发出
setChecked()
setUnchecked()
可由
QSignalMapper
处理的信号根据文档
QSignalMapper
仅管理无参数信号。您可以从
QCheckBox
派生一个新类,在该类中,您将
stateChanged(int)
信号连接到类中相应的插槽,在该插槽中,您可以发出
setChecked()
setUnchecked()
信号,这可能是最有效的方法。我想通过
setCheckState
来识别发送者并获得状态,并按照建议实现一个动态循环。很有魅力。这可能是最有效的方法。我想通过
setCheckState
来识别发送者并获得状态,并按照建议实现一个动态循环。工作起来很有魅力。
void Widget::createButton(const char *member, QString &data)
{
    QPushButton *button = new QPushButton(this);
    signalMapper = new QSignalMapper(this);
    signalMapper->setMapping(button, data);
    connect(signalMapper, SIGNAL(mapped(QString)), this, member);
    connect(button, SIGNAL(clicked()), signalMapper, SLOT(map()));
    ...
}


void Widget::createCheckBox(const char *member, QString &data)
{
}