首页 > 解决方案 > Qt slot 需要 const & QString,signal 只需要 QString

问题描述

我继承了 Qt 代码,其中信号通常仅使用以下类型声明:例如

class One : public QObject
{
    Q_OBJECT
signals:
    gotEvent(QString message);
}
class Two : public QObject
{
    Q_OBJECT
slots:
    handleEvent(QString const &message);
}
QObject::connect(one_instance, &One::gotEvent, two_instance, &Two::handleEvent);

当我emit gotEvent(string);从 One 类调用时(假设 one_instance 和 two_instance 在同一个线程中),字符串是否被复制,还是通过引用传递给 handleEvent()?

换句话说,字符串的 const-ness 是依赖于信号声明,还是只依赖于槽声明?我假设它在信号中声明的方式没有任何区别,因为信号不是定义的函数,但我想确定。

标签: qtqt-signals

解决方案


推荐阅读