ошибка: 'Qt :: ConnectionType' не является классом или пространством имен

0

Я скомпилировал код в win7 и отлично работал, и теперь, когда я скомпилирую его в ubuntu, эта ошибка появилась:

error: 'Qt::ConnectionType' is not a class or namespace

это происходит в этой строке:

connect(serial , SIGNAL(readyRead()) , this , SLOT(readData()) , Qt::ConnectionType::QueuedConnection);

Я не могу найти решение. Что мне делать? и извините за мой английский язык.

  • 3
    Попробуйте просто использовать Qt::QueuedConnection .
Теги:
qt
connection
compiler-errors

2 ответа

0
Лучший ответ

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);
4

Причина, по которой он работает в Windows 7, заключается в том, что вы используете другой компилятор, а именно Microsoft Visual C++, который поддерживает нестандартное расширение, которое позволяет вам квалифицировать имя вашего перечисления, GCC не поддерживает это расширение. Как всегда, вы должны проверять свои предупреждения так часто, что там лежит ответ.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню