C++ 如何映射到重载Qt插槽
我想重载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
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)
{
}