Я хочу перегрузить слот Qt, чтобы реагировать на clicked()
SIGNAL
из QPushButton
или stateChanged(int)
СИГНАЛ от QCheckBox
(поскольку нет СИГНАЛА, который излучается, когда установлен только флажок).
Так что это мои два слота.
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)
я хочу перейти в состояние ЧечБокса к перегруженному Widget::sendCom(QString data, int state)
также. Как сделать картирование?
Согласно документации QSignalMapper
только управляет беспараметрическими сигналами. Вы можете получить новый класс из QCheckBox
где вы подключаете stateChanged(int)
СИГНАЛ в соответствующий слот в классе, где вы излучаете setChecked()
или setUnchecked()
СИГНАЛ, который может быть обработан QSignalMapper
,
Других решений пока нет …