Название: изучаю ООП Отправлено: backdoor от Июнь 08, 2013, 21:25 Всем привет! Очередной раз холеось бы проконсультироваться по ошибкам) Ситуация простая, наследуем класс от QWidget и создаем просто один объект. Объясните, пожалуйста, новичку, что да как? Исходники и ошибки:
processor.h Код: #ifndef PROCESSOR_H processor.cpp Код: #include "processor.h" main.cpp Код: #include <QApplication> processor.obj:-1: ошибка: LNK2001: неразрешенный внешний символ ""public: virtual struct QMetaObject const * __thiscall Processor::metaObject(void)const " (?metaObject@Processor@@UBEPBUQMetaObject@@XZ)" processor.obj:-1: ошибка: LNK2001: неразрешенный внешний символ ""public: virtual void * __thiscall Processor::qt_metacast(char const *)" (?qt_metacast@Processor@@UAEPAXPBD@Z)" processor.obj:-1: ошибка: LNK2001: неразрешенный внешний символ ""public: virtual int __thiscall Processor::qt_metacall(enum QMetaObject::Call,int,void * *)" (?qt_metacall@Processor@@UAEHW4Call@QMetaObject@@HPAPAX@Z)" Название: Re: изучаю ООП Отправлено: mutineer от Июнь 08, 2013, 22:02 Такое ощущение что moc не обработал твой файл processor.cpp перед компиляцией
Название: Re: изучаю ООП Отправлено: lit-uriy от Июнь 09, 2013, 02:45 возможно макрос Q_OBJECT был написан не сразу, и первая компиляция пошла без него. Затем макрос добавлен, но qmake не вызывался, соответственно и moc не знает, что нужно обработать файл processor.h
Ещё вариант, в pro-файле не указан processor.h в переменной HEADERS Название: Re: изучаю ООП Отправлено: backdoor от Июнь 09, 2013, 11:39 все верно, подправил, пересохранил - заработало. Спасибо. Подскажите вот еще что, как обращаться к элементам окна через ui-> из других файлов. просто подключить mainwindow.h не помогает:
mainwindow.h Код: #include <QMainWindow> mainwindow.cpp Код: #include "mainwindow.h" Название: Re: изучаю ООП Отправлено: kambala от Июнь 09, 2013, 11:53 передавать указатель на MainWindow или нужные компоненты в другие классы
Название: Re: изучаю ООП Отправлено: backdoor от Июнь 09, 2013, 12:03 передавать указатель на MainWindow или нужные компоненты в другие классы а можно пример какой-нибудь? Название: Re: изучаю ООП Отправлено: mutineer от Июнь 09, 2013, 12:12 Код
Название: Re: изучаю ООП Отправлено: lit-uriy от Июнь 09, 2013, 16:04 >>как обращаться к элементам окна через ui-> из других файлов
а на практике это не нужно. Название: Re: изучаю ООП Отправлено: Igors от Июнь 10, 2013, 09:45 >>как обращаться к элементам окна через ui-> из других файлов Точнее это идет вразрез с принципами изучаемого ООП. Грамотно обращаться к др окну используя сигналы и/или события, а не лазить "напрямую" в потрохах др классаа на практике это не нужно. Название: Re: изучаю ООП Отправлено: lit-uriy от Июнь 10, 2013, 13:48 Igors, я даже другое имел в виду, не сигналы-слоты, а проще (для новичков).
Зачем кому-то понадобилось устанавливать, например, значение спинбокса у какого-то окна? Этот кто-то - источник данных, а окно - способ представить эти данные пользователю. Почти все окошки программ ориентированны на конкретную специфику. Поэтому взаимодействие окошка с другим кодом должно подчинятся смысловой нагрузке данных. Если, например, спинбокс отображает количество лампочек включеных в помещении, то окошку нужно сделать метод типа: setLampCount(int acount) и вызывать его из-за пределов окна |