Название: Ошибки Qt Visual Studio Integration Отправлено: CoderInside от Февраль 05, 2006, 21:37 Здравствуйте! :)
Начал интересоваться Qt недавно. Скачал с сайта http://qt.tttxp.ru/ qt-win-commercial-4.1.0-vs2003.exe + qt-vsintegration-1.1.0.exe. У меня стоит VS .NET 2003. Установил, все ОК. Компилируется, собирается, вроде все нормально. Кроме одного. Дело происходит в VS .NET 2003. Когда я хочу переместить какой нибудь виджет с панели Qt toolbox на форму - то появляется окошко с ошибкой: The following error occured: The application exited with an error (ExitCode 1). И кнопка ОК. Вопреки сообщению - программа не закрывается. Все продолжает работать. Если опять попробовать поместить виджет на форму - опять это же окошко с ошибкой. А вот когда нажать кнопку Сохранить - то ошибка первый раз не появляется. А потом все по прежнему :-(. Подскажите плз. Может кто сталкивался с подобной проблемой. Просто невозможно работать с такими ошибками. Название: Ошибки Qt Visual Studio Integration Отправлено: FrankS от Февраль 06, 2006, 02:00 Хм... попробуй всё снести и установить заново... я тоже качал от туда - проблем нет, может дело в твоём вижуале?
Название: Ошибки Qt Visual Studio Integration Отправлено: Steven_Orko от Февраль 06, 2006, 05:50 Цитата: "FrankS" Хм... попробуй всё снести и установить заново... я тоже качал от туда - проблем нет, может дело в твоём вижуале? У меня тоже была такая проблемма, когда я работал с qt-проектами, которые сгенерировал визард студии. Иногда появлялась такая ошибка, иногда нет. Но мне жизнь она не портила, потому не пытался ее устранить. Ща перешел на 2005, пока не проверял. Хотя, помню, как-то переустанавливал систему, и в тот раз все работало без проблемм, как и у FrankS. Название: Ошибки Qt Visual Studio Integration Отправлено: CoderInside от Февраль 07, 2006, 10:30 В настройках VS появилась вкладка Qt. Там есть два параметра. Один (верхний) отвечает за базу для автозавершения комманд. Вот когда я с него галочку снял - ошибки пропали. Но теперь плохо работает автозавершение (ну тот механизм который показывает список переменных, функций и прочее когда после имени класса пишешь точку или -> ;)). Как можно это устранить?
Название: Ошибки Qt Visual Studio Integration Отправлено: oktogen от Февраль 11, 2006, 11:02 Есть решение альтернативное.
Меня этот интегратор достал своими заскоками относительно обязательности файла ui в проекте, невозможностью нормально использовать много файлов для разных классов. Сделано следующее: 1) освоена технология QMake 2) Установлен QT 3) Установлен компалятор( использую вижуловский) 4) Редактор текстовый(я использую http://sourceviewer.narod.ru/) Далее создается проект qmake ,открывается qt-консоль, qmake nmake +К студии и к виндам теперь вообще не привязан +Никаких глюков. - не очень удобно. нет автозавершения и прочей.... Название: Ошибки Qt Visual Studio Integration Отправлено: Dendy от Февраль 11, 2006, 14:52 Интегратор - совершенно не критическая вещь для студии. Если честно - не понимаю, как многие жалуются на его работу и не удалят.
Редактирование форм лучше делать в Дизайнере, а не в студии. Помощь лучше читать из Асистента, а не из студии. Помощник для отладочной информации вписьІвается руками. Правила moc, uic, rcc прекрастно вписьІваются руками, чем автоматически. Кроме того для файлов с неизвестньІми расширениями сама студия предлагает установить правила по умолчанию. Не спорю, интегратор - вещь нужная, но далеко не критичная. Как для меня - он ещё не дорос, чтобьІ удобства его использования превосходили недостатки. Название: Ошибки Qt Visual Studio Integration Отправлено: ElderOrb от Февраль 11, 2006, 15:35 А мне интегратор совершенно не мешает, я к нему уже привык. ж) Да и сёрьзных глюков я вижу только два: иногда почему-то вылетает с ошибкой (достаточно редко, поэтому не напрягает), и глюк посерьёзней - иногда портит ui-файлы, но если заиметь привычку их периодически сэйвить опять же не проблема. Думаю уже в Qt 4.1.1 его полностью доведут до ума.
Цитировать Редактирование форм лучше делать в Дизайнере, а не в студии. Что умеет дизайнер из того что не умеет интегратор? Цитировать Помощь лучше читать из Асистента, а не из студии. По этому пункту полностью согласен. Цитировать Помощник для отладочной информации вписьІвается руками. А чё эта? ж))))Цитировать Правила moc, uic, rcc прекрастно вписьІваются руками, чем автоматически. О ужас ! ж) Это конечно полезно уметь, да у меня всё руки не дойдут почитать как и разобраться раз и навсегда.Название: Ошибки Qt Visual Studio Integration Отправлено: oktogen от Февраль 11, 2006, 16:08 Я последнюю неделю не пользуюсь вообще Ни студией ни интегратором.
Компилятор, QT консоль, текстовый редактор, QTDesigner и асистент. Цитировать Да и сёрьзных глюков я вижу только два: иногда почему-то вылетает с ошибкой (достаточно редко, поэтому не напрягает), и глюк посерьёзней - иногда портит ui-файлы, но если заиметь привычку их периодически сэйвить опять же не проблема. Кстати, в моей схеме никакой Ui шник вовсе не нужен и глюков нет! 2 магические команды и все довольны! Название: Ошибки Qt Visual Studio Integration Отправлено: Dendy от Февраль 11, 2006, 16:50 Цитата: "ElderOrb" Что умеет дизайнер из того что не умеет интегратор? Пользовался дизайнером из студии, не понравилось. Мои знакомьІе утверждают, что дизайнер в студии имеет некоторьІе недостатки (баги?), но ето должньІ исправить. Реально дизайнер - совершенно отдельная программа, просто производящая на свет ui-файльІ, с проектом форма не связана никак, поетому и воспринимать его лучше в отдельном окне. А так получается - просто программа в программе, понту... окошко только меньше (-: Цитировать Помощник для отладочной информации вписьІвается руками. А чё эта? ж)))) Debug Extensions - правка студийного autoexp.dat, в котором прописьІваются правила как визуализировать/править типьІ при отладке. Достаточно один раз сохранить копию куска, которьІй вставляет Qt Integration при инсталяции. Цитировать О ужас ! ж) Это конечно полезно уметь, да у меня всё руки не дойдут почитать как и разобраться раз и навсегда. Вот ето плохо. Почитать нужно просто для понимания как ета дурмашина Qt вообще функциклирует. Грубо говоря: для всех заголовочников/форм/ресурсов нужно прописать один и тот же Custom Build соответственно. Очень просто, копи-паст при добавлении одного из етих файлов в проект. Да и файлики можно организовать по правильньІм папочкам, временньІе файльІ - тож куда сам захотел, а не по умолчанию. Если интересно - могу написать пример. Название: Ошибки Qt Visual Studio Integration Отправлено: ElderOrb от Февраль 12, 2006, 14:50 Не хотел просить пример, так как думал что буду заслуженно отправлен читать доки ж). Конечно интересно, если б я раз и навсегда запомнил как всё вручную настраивается - поставил бы себе какой-нить codeblocks или ещё чё-нить опенсоурсовое и стал бы использовать опенсоурсовое Qt. Если конечно это удобно ж)
Название: Ошибки Qt Visual Studio Integration Отправлено: Dendy от Февраль 13, 2006, 12:17 Итак, предлагаю свой способ настройки студии, претендующий на правильньІй.
1. Ставим расширения отладчика. Нужно для правильного показа в окне отладочной информации Qt-типов. ОткрьІваем файл Common7/Packages/Debugger/autoexp.dat и добавляем в раздел [AutoExpand] то же самое, что делает интегратор: Код: ;QT_DEBUG_START (Qt Visual Studio Integration v1.1.0) 2. Добавляем по желанию подсветку синтаксиса ключевьІх Qt-фраз. Создаём (или открьІваем) файл Common7/IDE/usertype.dat и вписьІваем: Код: Q_OBJECT 3. Настраиваем директории студии. Options/Projects and Solutions/VC++ Directories: Include files: Код: $(qtdir)/include Library files: Код: $(qtdir)/lib Конфликтов не будет. Кто хочет - может задать абсолютньІе пути вместо переменной $(qtdir). Добавляя файльІ в проект мьІ должньІ прописьІвать правило, что с ним нужно делать. Например, для cpp-файлов студия автоматически ставит правило: компилировать как C/C++ код. Не стоит забьІвать, что правила можно устанавливать сразу для нескольких файлов, вьІделив их через Control. Далее - Properties/CustomBuild Step. 4. При добавлении в проект заголовочника, для которого нужно создать мета-информацию прописьІваем 3 строчки соответственно: Код: $(qtdir)/bin/moc.exe -I"$(qtdir)/include" $(InputDir)$(InputFileName) -o _tmp/moc_$(InputName).cpp Здесь можно вьІтворять всё что вздумается. Мне вот нравится создавать мета-информацию в папке _tmp с префиксом moc_. СгенерированньІй файл нужно будет добавить в проект руками или прописать в коде: Код: #include "moc_mycoolclass.cpp" (Иногда последний вариант предпочтительней, если используются Precompiled Headers.) 5. При добавлении формьІ, ui-файла в проект прописьІваем ему следующее: Код: $(qtdir)/bin/uic.exe $(InputDir)$(InputFileName) -o _tmp/ui_$(InputName).h Здесь опять же хоть конём танцуем. Предпочитаю создавать формьІ в той же временной папке в префиксом ui_. СгенерированньІй заголовочник включать в прект не нужно, ибо он инклудится в ком-нить cpp-файле, реализующем форму. 6. При добавлении ресурса, qrc-файла прописьІваем следующее: Код: $(qtdir)/bin/rcc.exe -name $(InputName) $(InputDir)$(InputFileName) -o _tmp/qrc_$(InputName).cpp Результат добавляем в проект. 7. Ещё один екзотический способ прекомпиляции - из cpp-файла, когда тип описьІвается в самом cpp-файле. В етом случае после обьявления типа обязано следовать: #include "mycoolclass.moc" Не рекомендуется повторять в домашних условиях. У студии проблемьІ с пересозданием файла, которьІй должен генерировать сам себя, ибо она проверяет по дате последнего изменения. Но на всяк пожарньІй вот код при добавлении в проект moc-файла: Код: $(qtdir)/bin/moc.exe -I"$(qtdir)/include" $(InputDir)$(InputName).cpp -o _tmp/$(InputName).moc 8. Мелочи. В дополнительньІе директории инклудов проекта не забудьте добавить: Код: _tmp или любое другое название временной папке, что вьІберите. В список либ теперь можно добавлять необходимьІе, к примеру: Код: qtmaind.lib QtCored4.lib QtGuid4.lib QtXmld4.lib Вроде ничего не забьІл. Ничего сложного. Советую всем попробовать. Название: Ошибки Qt Visual Studio Integration Отправлено: Taimas от Март 18, 2006, 00:34 Здравствуйте, я тоже новичок в Qt.
CoderInside, у меня тоже qt-commercial-4.1.0+qt-vsintegration-1.1.0 и Visual Studio.NET 2003. Поначалу была такая же проблема с размещением виджетов на форму. Тогда я по умолчанию создавал проекты в MyDocuments/Visual Studio Projects и получал такие же ошибки. Потом попобовал создать проект в папке где я установил сам Qt (C:/Qt/QProjects), и все было нормально. У меня такая проблема: не могу понять как создавать свои собственные слоты. Если вмешаться в ui.h файл, то затем постоянно напоминает о том что он изменен, и это очень раздражает. Неужели нет штатного метода для этой цели, ведь в Qt3 Desiner все очень понятно. Название: Ошибки Qt Visual Studio Integration Отправлено: Steven_Orko от Март 18, 2006, 12:43 Цитата: "Taimas" Здравствуйте, я тоже новичок в Qt. У меня такая проблема: не могу понять как создавать свои собственные слоты. Если вмешаться в ui.h файл, то затем постоянно напоминает о том что он изменен, и это очень раздражает. Неужели нет штатного метода для этой цели, ведь в Qt3 Desiner все очень понятно. Эта проблемма на форуме уже обсуждалась не раз. И инициатором, вернее, тем, кто первый об этом рассказал, был Dendy. В Qt Designer НЕЛЬЗЯ создавать свои слоты. и это правильно. Потому что это ознает "влезть в код". Свои слоты надо создавать в классе, который наследуется от класса, описанного в *.ui и находящегося в заголовочном файле ui_<имя файла формы>.h. Этот файл инклюдится в твой потомок. Слоты создаются простым объявлением в интерфейсе класса после так называемых ключевых слов прав доступа: public slots, protected slots, private slots. Слоты не могут возвращать значение, не могут иметь агрументов по-умолчанию. Подробнее см. Qt Assistant. Название: Ошибки Qt Visual Studio Integration Отправлено: Dendy от Март 20, 2006, 11:28 СгенерированньІй дизайнером .ui файл содержит просто контейнер для елементов управления, их свойств, трансляций. Всё ето можно разместить на любом окне, совершенно не обязательно наследоваться для создания нового типа окна. Лично я предпочитаю Ui_ класс создавать динамически, чтобьІ не включать его в заголовочник, хотя в етом есть свои минусьІ.
2 Steven_Orko Хочу поправить. СлотьІ могут возвращать значения и могут иметь аргументьІ по умолчанию. При етом коннектить к ним можно сигнальІ с произвольньІм колличеством параметром >= количеству параметров слота, которьІе не по умолчанию. Название: Ошибки Qt Visual Studio Integration Отправлено: Steven_Orko от Март 21, 2006, 00:30 Цитата: "Dendy" 2 Steven_Orko Хочу поправить. СлотьІ могут возвращать значения и могут иметь аргументьІ по умолчанию. При етом коннектить к ним можно сигнальІ с произвольньІм колличеством параметром >= количеству параметров слота, которьІе не по умолчанию. 2 Dendy: Выписка из Assistant: Цитировать Slots A slot is called when a signal connected to it is emitted. Slots are normal C++ functions and can be called normally; their only special feature is that signals can be connected to them. A slot's arguments cannot have default values, and, like signals, it is rarely wise to use your own custom types for slot arguments. Since slots are normal member functions with just a little extra spice, they have access rights like ordinary member functions. A slot's access right determines who can connect to it: A public slots section contains slots that anyone can connect signals to. This is very useful for component programming: you create objects that know nothing about each other, connect their signals and slots so that information is passed correctly, and, like a model railway, turn it on and leave it running. A protected slots section contains slots that this class and its subclasses may connect signals to. This is intended for slots that are part of the class's implementation rather than its interface to the rest of the world. A private slots section contains slots that only the class itself may connect signals to. This is intended for very tightly connected classes, where even subclasses aren't trusted to get the connections right. You can also define slots to be virtual, which we have found quite useful in practice. Compared to callbacks, signals and slots are slightly slower because of the increased flexibility they provide, although the difference for real applications is insignificant. In general, emitting a signal that is connected to some slots, is approximately ten times slower than calling the receivers directly, with non-virtual function calls. This is the overhead required to locate the connection object, to safely iterate over all connections (i.e. checking that subsequent receivers have not been destroyed during the emission), and to marshall any parameters in a generic fashion. While ten non-virtual function calls may sound like a lot, it's much less overhead than any new or delete operation, for example. As soon as you perform a string, vector or list operation that behind the scene requires new or delete, the signals and slots overhead is only responsible for a very small proportion of the complete function call costs. The same is true whenever you do a system call in a slot; or indirectly call more than ten functions. On an i586-500, you can emit around 2,000,000 signals per second connected to one receiver, or around 1,200,000 per second connected to two receivers. The simplicity and flexibility of the signals and slots mechanism is well worth the overhead, which your users won't even notice. Note that other libraries that define variables called signals or slots may cause compiler warnings and errors when compiled alongside a Qt-based application. To solve this problem, #undef the offending preprocessor symbol. Конечно, в этой части сказано только про значение по-умолчанию, но я в другом месте читал и про тип возвращаемого значения. P.S. Qt 4.1.1 Название: Ошибки Qt Visual Studio Integration Отправлено: comrade от Март 21, 2006, 11:38 мне кажется интергратор вообще глючная поделка. у меня, например, у QTabWidget свойство CurrentTabName не получалось изменить, в то время как в дизигнере меняется всё нормально. а в дизигнере не нравится множество отдельных форм. а если еще и GIMP рядом запустить, чтоб иконку нарисовать, которую потом в свою кнопочку вставить, то вообще заблудиться можно.
Название: Ошибки Qt Visual Studio Integration Отправлено: SLiDER от Март 21, 2006, 16:58 Цитата: "comrade" мне кажется интергратор вообще глючная поделка. у меня, например, у QTabWidget свойство CurrentTabName не получалось изменить, в то время как в дизигнере меняется всё нормально. а в дизигнере не нравится множество отдельных форм. а если еще и GIMP рядом запустить, чтоб иконку нарисовать, которую потом в свою кнопочку вставить, то вообще заблудиться можно. Так в чем собственно дело? Edit -> User Interface Mode -> Docked Window спасет отца русской демократии. :wink: А мне, с моими двумя мониторами такой режим как раз больше нравится. :roll: Название: Ошибки Qt Visual Studio Integration Отправлено: comrade от Март 21, 2006, 23:24 to SLiDER
спасибо, что подсказал! доведется в Qt4 чтонить делать - сразу воспользуюсь этой настройкой :) а ща я покаместь только с Qt3 работаю. а насчёт двух мониторов не представляю даже :D я в одном окна собрать не могу, а если их еще в два разных растащить... ох, лучше не пробовать :) |