использование Qt designer в visual studio?

Я использую visual studio 2010, надстройку Qt и т. д. Все в порядке, затем создайте новый проект с помощью надстройки Qt... когда кнопку *.файл ui (фактическая форма) в VS открывает Qtdesigner, затем я включаю некоторые элементы управления, но это не меняет мой код вообще:/

форма Qt изменена, она содержит эти элементы управления, но исходные файлы такие же, как и раньше, даже после создания моего проекта.

Я что-то пропустил? Я думаю, что Qtdesinger shoult поставил какой-то код для объектов, которые я создал с помощью Qtdesigner.

cos без этого мы должны написать весь код, как если бы не было Qtdesigner, поэтому Qtdesinger-это useles в Visual studio, то же самое, что мы могли бы сделать вручную, кодируя интерфейс формы. большое спасибо.

EDIT:

OK Я скопировал это с сайта Qt:

вы ссылаетесь на объекты из a .файл UI...

анализатор модели кода Visual Studio анализирует только источники C++, что означает что виджеты или объекты определено в .файлы пользовательского интерфейса недоступны. Чтобы обойти проблему, надстройка Qt Visual Studio автоматически генерирует код C++ из .ui-файл путем сохранения файла и запуска МСЖД на нем. Этот шаг делается каждый раз, когда проект строится. Если автозавершение кода не работает, попробуйте перестроить проект. Это возможно, вам придется подождать некоторое время, прежде чем код будет завершен полностью работает после обновления .файл UI. Для получения дополнительной информации, вы можете обратиться к проекту изменения Раздел имущества. Это все еще не работает...

вы должны обновить модель кода Intellisense. Это сделано открытие обозревателя решений, вызов контекстного меню проект и активация обновления элемента Intellisense.

теперь похоже, что у меня такие проблемы, но это совсем не помогает, обновите intelisece. Я не вижу такой опции в visual studio, похоже, моя надстройка visual studio не работает.

Он говорит: "Вы следует обновить код модели " Woot? может кто-нибудь объяснить мне как это сделать пожалуйста.

вот некоторые выходные предупреждения при создании моего проекта:

предупреждение 1 предупреждение: нет ресурсов в 'C:UsersAdmindocumentsvisual студия 2010проектыVisualStudioтесттест.qrc'. C:UsersAdmindocumentsvisual studio 2010проектыVisualStudiotestRCC предупреждение 2 предупреждение LNK4099: PDB ' vc100.pdb не был найден с qtmaind.lib (qtmain_win.obj) ' или at "C:UsersAdmindocumentsvisual студия 2010проектыVisualStudiovc100.pdb'; связывание объекта как без отладки информация C:UsersAdmindocumentsvisual студия 2010проектыVisualStudioтестqtmaind.lib (qtmain_win.параметр obj)

3 ответов


Я собираюсь объяснить немного, как все работает и отношения между файлами, и, надеюсь, это решит вашу проблему.

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

первый... пользовательский этап построения будут выполняться на UI-файл. Этот шаг сборки запускает "uic", как сказал Макке, и создаст файл с именем " ui_thenameofyouruifile.ч." Где этот файл расположение зависит от настроек проекта, но если вы посмотрите в проекте, вы увидите папку под названием сгенерированные файлы в проекте.

enter image description here

Если вы посмотрите туда, вы увидите недавно сгенерированный файл. Это код, который "изменяется"при внесении изменений в форму. Теперь, если этот файл не обновляется или вообще не существует, то каким-то образом ваши настройки проекта перепутались. В этом случае я бы удалил ваш .UI-файл из проекта и добавьте еще раз. Надстройка должна сделать это волшебство и добавить все, что вам нужно. Постройте снова, и это должно сработать. (Я предполагаю, что это, вероятно, ваша проблема)

второе, что должно произойти при построении, это то, что класс, который использует ваш файл пользовательского интерфейса, должен перекомпилировать. Обычно при создании файла пользовательского интерфейса также создается сопровождающий .h и .файл cpp. Здесь мы делаем любую забавную логику, которая нам может понадобиться в нашем окне. Qt designer никогда не изменит это класс.

в заголовочном файле мы ссылаемся на файл пользовательский интерфейс, делая это:

    namespace Ui {
       class thenameofyouruifile;
    }

   #include "ui_thenameofyouruifile.h"

и затем мы добавляем переменную-член

Ui:: thenameofyouruifile UI;

есть несколько способов сделать это, но в принципе это идея. Предполагается, что надстройка настроит ваш проект так, чтобы каталог, в который идут файлы генерации, был включен в "дополнительные каталоги включения" в настройках Вашего проекта, но это еще одно место для проверки убедитесь, что ваш код действительно связан с правильным сгенерированным файлом.


Если надстройка Qt установлена правильно, она должна генерировать пользовательский шаг сборки для файлов, связанных с Qt (.ui или MOC файл). Я не пробовал надстройку Qt с VS 2010, но с VS 2008 все в порядке.

на обойти для вашей проблемы вам нужно вручную добавить пользовательский шаг сборки для каждого файла пользовательского интерфейса, который у вас есть в проекте. Чтобы сделать это, шаг:

  1. щелкните правой кнопкой мыши файл пользовательского интерфейса и выберите Свойства (я использую VS-2008 для этого шага, и ожидайте, что это может не сильно отличаться в VS 2010).

  2. на шаге пользовательской сборки добавьте это в командной строке: "$(QTDIR)\bin\uic.exe "- o".\GeneratedFiles\ui_$(InputName).h "" $(InputPath)"

  3. и добавьте это в вывод: ".\GeneratedFiles\ui_$(InputName).h"

  4. и это при дополнительных зависимостях: $(QTDIR)\bin\uic.исполняемый. Затем нажмите кнопку Применить / ОК.

Если это сделано, файл пользовательского интерфейса компилируется, (при щелчке правой кнопкой мыши его можно скомпилировать), поэтому при изменении содержимого файла пользовательского интерфейса новый код пользовательского интерфейса (.h) файл восстанавливается.

альтернативно, чтобы сбросить файл проекта VS (vcprojx), вы можете создать проект Qt в Qt creator (или, если у вас уже есть), а затем преобразовать проект Qt creator (.pro) в vcproj с помощью этой командной строки:

qmake -spec win32-msvc2010 -tp vc

Это создаст vcproj с правильным шагом пользовательской сборки для вас (если у вас есть много файлов пользовательского интерфейса, то вы не нужно сделать первый подход).


Если вы создали виджет Qt с помощью мастера нового класса, материал должен работать так, как ожидалось.

т. е. ваш .файлы пользовательского интерфейса компилируются uic Qt .cpp файлы, т. е. вам нужно построить свой проект, чтобы получить эти изменения в ui-класс.

Итак,.файлы пользовательского интерфейса должны быть добавлены в проект и иметь некоторые специальные правила сборки, которые вызывают " uic " на них. Если это не так, попробуйте повторно добавить их в свой проект (таким образом, надстройка Qt должна настроить сборку правила)

обычно у вас есть класс, который наследует QWidget, который затем включает скомпилированный cpp-класс, так или иначе, обычно как переменную-член (но наследование также является опцией).

добавить .ui-файл прямо должен работать тоже (если вы находитесь в проекте Qt, которым вы являетесь..), но явно что-то не так.

работает ли пример проектов, как ожидалось?