0

Qt SLOT をオーバーロードして、 a から発行されたものまたは a から発行された SIGNAL に反応するようにしたいclicked() SIGNAL(QPushButtonチェックstateChanged(int)ボックスQCheckBoxがオンになっている場合にのみ発行される SIGNAL がないため)。

これが私の 2 つの 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)ます。マッピングはどのように行われますか?

4

1 に答える 1

2

ドキュメントによると、QSignalMapperパラメータのない信号のみを管理します。SIGNAL をクラス内の対応するスロットに接続QCheckBoxする場所から新しいクラスを派生させることができます。stateChanged(int)setChecked()setUnchecked()QSignalMapper

于 2016-01-27T12:15:10.930 に答える