Слот Qt принимает const и QString, сигнал принимает только QString - PullRequest
1 голос
/ 20 июня 2020

Я унаследовал код 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 ()?

Другими словами, зависит ли константность строки от объявления сигнала или только объявление слота? Я предполагаю, что способ, которым он объявлен в сигнале, не имеет никакого значения, потому что сигнал не является определенной функцией, но я хотел бы знать наверняка.

...