Название: виджет не реагирует на сигналы (можно закрыть) Отправлено: Kosh от Ноябрь 20, 2006, 13:39 Есть перегруженный от QlistView виджет и вызывалось у него выпадающее меню. После редактирования почему-то оно больше не вызывается... :cry:
Макрос Q_OBJECT на месте. Синтаксис и слота и сигнала проверила- всё правильно, тем более, что connect() и слот с меню вызывается из родителя, которого не торгала. Что ещё может быть? добавлено спустя 1 час 15 минут: всё оказалось банально просто, не создавался moc-файл Заново создала проект, всё заработало. Обидно, что уже не раз на эти грабли наступала... Тему можно закрывать. Название: виджет не реагирует на сигналы (можно закрыть) Отправлено: Dendy от Ноябрь 20, 2006, 15:02 Интересно по какой причине moc_ файл не создался. В какой среде работаете, если не секрет?
Название: виджет не реагирует на сигналы (можно закрыть) Отправлено: Kosh от Ноябрь 20, 2006, 16:22 работаю в винде в VC 6.0 . Если просто включить файл в проект, то moc-файл не генерится, приходится пересоздавать проект с помощью qmake. Может, есть какие-то настройки VC, но мне просто некогда разбираться.
Название: виджет не реагирует на сигналы (можно закрыть) Отправлено: Dendy от Ноябрь 20, 2006, 16:48 Конечно же там есть настройки. Жаль, под рукой нет VC6, сходу не вспомню куда именно вписьІвать. Я бьІ сказал прописьІвать их обязательно, ибо процесс сборки должен бьІть полностью автоматизирован. Автоматизация происходит через дерево зависимостей (Dependencies), как в Makefile'е и все студии нормально с етим работают.
Название: виджет не реагирует на сигналы (можно закрыть) Отправлено: Kosh от Ноябрь 20, 2006, 17:24 Если как-нибудь подскажите, где настраивать, буду очень благодарна. Я в VC профан полный, методом тыка всё выясняю или по аналогии с имеющимися записями, но в настройках проета, чаще всего вижу пустые поля и что туда писать - хз.
Название: виджет не реагирует на сигналы (можно закрыть) Отправлено: Dendy от Ноябрь 20, 2006, 18:08 Допустим, у вас есть файл MyObject.h
1. Правой кнопкой на MyObject.h в списке файлов проекта -> Settings 2. General. Ставим галочку: Код: Always use custom build step 3. Custom Build. а) Description (ето строка, которая будет вьІводиться в output при обработке етого файла): Код: MOCing MyObject.h... б) Commands (здесь прописьІваем коммандьІ прекомпилляции, аналогично как в Makefile'е, что генерит qmake) Код: %qtdir%\bin\moc.exe "$(InputDir)\$(InputName).h" -o "$(InputDir)\moc_$(InputName).cpp" Таким образом результирующий файл создастся в той же папке, что и исходньІй. Не очень хороший способ. Можно заменить, например на такой: Код: mkdir "$(ProjDir)\.moc" или во временную папку: Код: %qtdir%\bin\moc.exe "$(InputDir)\$(InputName).h" -o "$(IntDir)\moc_$(InputName).cpp" в) Outputs (ето список зависимостей от текущего файла (MyObject.h), вьІшеуказанньІе командьІ будут вьІполняться только если время изменения MyObject.h стало БОЛЬШЕ одной из зависимостей в етом списке) Код: $(IntDir)\moc_$(InputName).cpp Ето пример для генерации moc_ файла во временную папку. Файл moc_MyObject.cpp будет каждьІй раз пересоздаваться при изменении MyObject.h с помощью команд в пункте б). Название: виджет не реагирует на сигналы (можно закрыть) Отправлено: Kosh от Ноябрь 21, 2006, 10:47 Dendy, большое спасибо!!!
Для тех, кто ещё этим заинтересуется, замечу, что эти настройки делаются только для h-файлов, содержащих описание qt-классов. |