gpt4 book ai didi

c++ - 如何映射到重载Qt槽

转载 作者:行者123 更新时间:2023-11-28 02:12:50 25 4
gpt4 key购买 nike

我想重载 Qt SLOT 以响应从 QPushButtonstateChanged 发出的 clicked() SIGNAL (int) 来自 QCheckBox 的 SIGNAL(因为只有选中复选框时才不会发出 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) 还有。如何进行映射?

最佳答案

根据文档QSignalMapper仅管理无参数信号。您可以从 QCheckBox 派生一个新类你在哪里连接 stateChanged(int) SIGNAL 到你发出 setChecked() 的类中的相应插槽或 setUnchecked()可以由 QSignalMapper 处理的信号.

关于c++ - 如何映射到重载Qt槽,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35035505/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com