如何映射到重载Qt插槽
How to map to overload Qt slot
我想重载Qt插槽,以对来自QPushButton
发出的clicked()
SIGNAL
或来自QCheckBox
的stateChanged(int)
信号做出反应(因为仅在选中复选框时没有发出SIGNAL)。
这是我的两个插槽。
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
处理。
相关文章:
- 继承函数的重载解析
- Qt VTK交互风格的信号到小部件
- QT在错误的班级中寻找空位
- 如何在选项卡视图Qt中设置一个新项目,并保存以前的项目
- 在Qt小部件应用程序中,在重载的"paintEvent"中的"setValue"
- QT Qt并发运行与重载类函数
- Qt重载运算符
- Qt/Qml 和方法重载
- Qt C++新的类似方法.我是重载方法、编写新方法还是使用默认参数
- QT - QAction::eventFilter:不明确的快捷方式重载
- 如何映射到重载Qt插槽
- Qt C++运算符 == 重载 Qlist 未调用
- 如何在qt c++中的子类中重载超类方法
- 关于Qt MessageBox::warning()重载
- 如何使用QT命名空间中使用的重载new操作符
- 新的Qt信号语法错误与重载没有这个
- 在QT中重载QDebug
- Qt - 带有重载运算符的 QDataStream<<用于对象指针 (Class*)
- Qt—未解析的重载函数类型
- std::thread::thread(<未解析的重载函数类型>) in Qt