Я скомпилировал код в win7 и отлично работал, и теперь, когда я скомпилирую его в ubuntu, эта ошибка появилась:
error: 'Qt::ConnectionType' is not a class or namespace
это происходит в этой строке:
connect(serial , SIGNAL(readyRead()) , this , SLOT(readData()) , Qt::ConnectionType::QueuedConnection);
Я не могу найти решение. Что мне делать? и извините за мой английский язык.
Qt::ConectionType
- это enum
и enum
их символов в содержащее пространство имен в C++. (Пока class enum
не делает этого и формирует собственное пространство имен). таким образом
connect(serial , SIGNAL(readyRead()) , this , SLOT(readData()) , Qt::ConnectionType::QueuedConnection);
неверно, но
connect(serial , SIGNAL(readyRead()) , this , SLOT(readData()) , Qt::QueuedConnection);
является. Кстати, в Qt 5 есть новое connect
-Syntax, обеспечивающее безопасность типа компиляции. Это выглядит так:
connect(serial, &QIODevice::readyRead,this , &ClassOfThis::readData, Qt::QueuedConnection);
Причина, по которой он работает в Windows 7, заключается в том, что вы используете другой компилятор, а именно Microsoft Visual C++, который поддерживает нестандартное расширение, которое позволяет вам квалифицировать имя вашего перечисления, GCC не поддерживает это расширение. Как всегда, вы должны проверять свои предупреждения так часто, что там лежит ответ.
Qt::QueuedConnection
.