Следующая программа обработает sh, когда я скомпилирую и запусту ее в Qt Creator на Windows:
TestObject.h:
#include <QObject>
class TestObject : public QObject {
Q_OBJECT
public:
TestObject(QObject *parent = nullptr);
signals:
void signal();
public slots:
void slot();
};
TestObject. cpp:
#include "TestObject.h"
TestObject::TestObject(QObject *parent) : QObject(parent) {
connect(this, &TestObject::signal, this, &TestObject::slot);
}
void TestObject::slot() {}
TestObject global;
int main(int argc, char *argv[]) {
TestObject local;
return 0;
}
Если я удалю либо вызов connect
в конструкторе TestObject, либо TestObject globalVar;
, тогда cra sh не будет. Что-то не так с вызовом connect
в конструкторе глобальной области действия. Локальная переменная в main()
не вызывает никаких проблем.
Я пытался скомпилировать против Qt 5.9.9, 5.11.2 и 5.14.2, и у них у всех один и тот же cra sh.
Если я скомпилирую ту же программу на macOS, нет cra * sh.
Есть ли что-то, что я делаю неправильно, или какой-то способ обойти эту проблему?