В моем приложении есть определенные объекты, которые связаны между собой сигналами и слотами. Похоже, что в последнее время эти слоты не вызывались надежно, когда испускаются сигналы, к которым они привязаны.
Эти объекты соединяются правильно и фактически работают нормально, когда я строю свой проект в режиме «Release», однако я просто заметил, что если я строю в режиме «Debug», слоты, кажется, не вызываются, если я не следую за ними с точкой останова.
Кроме того, если я следую за выполнением моего кода пошагово с помощью отладчика или устанавливаю точку останова в одном из этих слотов, то эти слоты, похоже, действительно вызваны.
Это метод, в котором я подключаю эти «определенные» объекты:
void Window::dynamicConnect(Entities *senderName, const QString &signalName, Entities *receiverName, const QString &slotName)
{
QMetaMethod signal = senderName->metaObject()->method(senderName->metaObject()->indexOfSignal(QMetaObject::normalizedSignature(qPrintable(signalName))));
QMetaMethod slot = receiverName->metaObject()->method(receiverName->metaObject()->indexOfSlot(QMetaObject::normalizedSignature(qPrintable(slotName))));
QObject::connect(senderName,signal,receiverName,slot);
}
Я также не получаю никаких ошибок вообще. У кого-нибудь есть какие-либо идеи?
Единственная причина, по которой это является проблемой, заключается в том, что я бы не хотел переключаться между двумя сборками все время.
Задача ещё не решена.