Russian Qt Forum
Ноябрь 22, 2024, 23:35 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: виджет не реагирует на сигналы (можно закрыть)  (Прочитано 5273 раз)
Kosh
Гость
« : Ноябрь 20, 2006, 13:39 »

Есть перегруженный от QlistView виджет и вызывалось у него выпадающее меню. После редактирования почему-то оно больше не вызывается...  :cry:
   Макрос Q_OBJECT на месте.
   Синтаксис и слота и сигнала проверила- всё правильно, тем более, что connect() и слот с меню вызывается из родителя, которого не торгала.
   Что ещё может быть?

добавлено спустя 1 час 15 минут:

 всё оказалось банально просто, не создавался moc-файл
Заново создала проект, всё заработало. Обидно, что уже не раз на эти грабли наступала...
   Тему можно закрывать.
Записан
Dendy
Гость
« Ответ #1 : Ноябрь 20, 2006, 15:02 »

Интересно по какой причине moc_ файл не создался. В какой среде работаете, если не секрет?
Записан
Kosh
Гость
« Ответ #2 : Ноябрь 20, 2006, 16:22 »

работаю в винде в VC 6.0 . Если просто включить файл в проект, то moc-файл не генерится, приходится пересоздавать проект с помощью qmake. Может, есть какие-то настройки VC, но мне просто некогда разбираться.
Записан
Dendy
Гость
« Ответ #3 : Ноябрь 20, 2006, 16:48 »

Конечно же там есть настройки. Жаль, под рукой нет VC6, сходу не вспомню куда именно вписьІвать. Я бьІ сказал прописьІвать их обязательно, ибо процесс сборки должен бьІть полностью автоматизирован. Автоматизация происходит через дерево зависимостей (Dependencies), как в Makefile'е и все студии нормально с етим работают.
Записан
Kosh
Гость
« Ответ #4 : Ноябрь 20, 2006, 17:24 »

Если как-нибудь подскажите, где настраивать, буду очень благодарна. Я в VC профан полный, методом тыка всё выясняю или по аналогии с имеющимися записями, но в настройках проета, чаще всего вижу пустые поля и что туда писать - хз.
Записан
Dendy
Гость
« Ответ #5 : Ноябрь 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 "$(ProjDir)\.moc\moc_$(InputName).cpp"

или во временную папку:
Код:
%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
Гость
« Ответ #6 : Ноябрь 21, 2006, 10:47 »

Dendy, большое спасибо!!!
Для тех, кто ещё этим заинтересуется, замечу, что эти настройки делаются только для h-файлов, содержащих описание qt-классов.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.069 секунд. Запросов: 20.