【发布时间】:2016-01-27 11:01:40
【问题描述】:
我想重载 Qt SLOT 以对来自QPushButton 的clicked() SIGNAL 或来自QCheckBox 的stateChanged(int) SIGNAL 作出反应(因为当复选框为仅检查)。
所以这是我的两个 SLOT。
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->createButton(SLOT(sendCom(QString), data);,我调用以下代码,映射工作正常。
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)
{
}
对于widget->createCheckBox(SLOT(QString, int), data),我也想将 ChechBox 的状态传递给重载的Widget::sendCom(QString data, int state)。如何进行映射?
【问题讨论】:
标签: c++ qt qsignalmapper