在 Qt 5 中连接重载的信号和槽
当尝试使用指向成员的指针连接 Qt 5 中的重载信号和槽时函数语法,开发人员可能会遇到编译错误。要解决这个问题,必须了解问题并应用适当的解决方案。
信号和槽过载的问题
信号和槽过载,例如 QSpinBox: :valueChanged(int) 和 QSpinBox::valueChanged(QString) 连接它们时可能会导致混乱。当尝试连接到信号而不明确指定要使用哪个重载时,就会出现此问题。
Qt 5.7 及更高版本的解决方案
从 Qt 5.7 开始,Qt 提供了帮助程序功能来选择所需的信号过载。要指定重载信号,请使用 qOverload 函数,如下所示:
Qt 5.6 及更早版本的解决方案
对于 Qt 5.7 之前的版本,显式强制转换使用信号发送到正确的类型static_cast:
丑陋的解决方法
虽然有效,但 static_cast 方法远非优雅。考虑使用以下 C 11 代码片段:
Qt 5.7 辅助函数
Qt 5.7 引入了辅助函数来简化流程。主要帮助器是 qOverload,还有 qConstOverload 和 qNonConstOverload 等附加选项。
文档说明
在 Qt 5.7 及更高版本中,重载信号的文档明确提供了以下示例如何使用辅助函数连接到每个重载。具体指导请参阅文档。
以上是如何在 Qt 5 中连接重载的信号和槽?的详细内容。更多信息请关注PHP中文网其他相关文章!