Q_OBJECT Проблема в Visual C ++ - PullRequest
       19

Q_OBJECT Проблема в Visual C ++

1 голос
/ 01 сентября 2011

Я получил проект на основе Visual C ++ QT от нашего клиента.Я установил библиотеки QT, затем скомпилировал проект.Проект был скомпилирован без проблем.

Теперь мне нужно включить новый дополнительный интерфейс GUI в существующий проект.Я создал графический интерфейс в конструкторе QT, а затем сохранил в исходном каталоге проекта VC ++.Затем я написал .h и .cpp файл для нового графического интерфейса и мог вызвать этот интерфейс.Теперь мне нужно включить SIGNALS и SLOTS, когда я включаю Q_OBJECT в файл .h.У меня ошибка компиляции.

Это ошибки, , пожалуйста, помогите мне решить эту проблему :

unresolved external symbol "public: virtual struct QMetaObject const * __thiscall BetaLineServer::metaObject(void)const " (?metaObject)

unresolved external symbol "public: virtual void * __thiscall BetaLineServer::qt_metacast(char const *)"

unresolved external symbol "public: virtual int __thiscall BetaLineServer::qt_metacall(enum QMetaObject::Call,int,void * *)" (?qt_metacall@

Ответы [ 4 ]

4 голосов
/ 01 сентября 2011

Каждый раз, когда вы добавляете макрос Q_OBJECT в класс, вы должны обязательно перезапустить qmake и затем скомпилировать.

4 голосов
/ 01 сентября 2011

Все, что вам нужно, это скомпилировать заголовочные файлы с помощью moc, которые содержат макрос Q_OBJECT.И как это сделать?здесь это

  1. Вы можете вручную вводить команды для компиляции файлов moc или uic ИЛИ

  2. -> Установить надстройку Qt-VS.http://qt.nokia.com/downloads/visual-studio-add-in

    -> Теперь откройте Visual Studio и создайте новый проект Qt, как описано в здесь , а затем

    -> Щелкните правой кнопкой мыши файл заголовка, который содержитмакрос Q_OBJECT вы должны найти что-то вроде ниже.Скопируйте эти команды в свой проект.

    -> Замените имя файла заголовка на ваше имя в команде 'Command Line'

    -> один раз скомпилируйте, и это должно сгенерировать файлы moc_xxxxx.cpp, включить их в ваш проект.

enter image description here

Для дальнейшего использования, если вы создадите проект Qt в VS с помощью этого плагина, вы должны автоматически добавить эти команды
2 голосов
/ 01 сентября 2011

Возможно, вам просто нужно добавить ваши файлы .ui, .cpp и .h в файл проекта.

Qt запустит 'moc' в файле пользовательского интерфейса, если он там указан, что создаст исходный код для предоставления отсутствующих символов.

1 голос
/ 28 сентября 2012

Исключите файл .h из проекта и включите его снова - moc_.cpp появится в «Сгенерированных файлах», а ошибки компоновки исчезнут.

...