Как подключить qt к visual studio 2019

Обновлено: 07.07.2024

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

Создание pro-файла

Работать в Visual Studio (VS) намного приятнее, чем в QtCreator.
При создании приложения, где графический интерфейс будет написан на Qt, а функциональная часть в VS, необходимо создать собственно файл графического приложения и сохранить его. Он будет иметь формат ui. Далее сохраняем файл, который будет содержать описание окна и элементов, которые в нем находятся, его имя будет следующим: ui_graphicalInterfaceName.h (в рассматриваемом примере ui_mainwindow.h). Делается выполнением следующей последовательности действий: Form->ViewCode… -> Save в ту же директорию, где лежит ui-файл. Следующий шаг - создание pro-файла, который необходим для qmake, чтобы соединить VS с Qt.
Например:

Описывать строчки буду сверху вниз:

  • TEMPLATE = app – указываем, что создаем приложение.
  • CONFIG += qtdebug – описываем с какими настройками будет работать наш проект
  • DEFINES -= UNICODE – определяем, что Unicodeне будет использован
  • OBJECTS_DIR = debug – указываем расположение объектов, в данном случае это папка debug
  • MOC_DIR = $$OBJECTS_DIR – указываем расположение moc – файлов, в примере оно находится в папке debug
  • SOURCES += … – указываем cpp – файлы
  • HEADERS += … - указываем h-файл(ы), в котором находится описание класса, связанного с графической оболочкой, в котором будет описан класс со слотами, функциями работы с интерфейсом.
  • FORMS += GUI/mainwindow.ui – указываем ui – файл.

Созданный файл является некоторым аналогом makefile. По заданным параметрам и указанным настройкам будет создан проект VS.

Начинаем работать с файлами

В файле, указанном в строке HEADERS, создаем класс, который будет отвечать за работу с приложением, от какого класса он наследует указано в QtDesiner в окне ObjectInspector. Подключаем к этому классу ранее созданный файл ui_graphicalInterfaceName.h.

Создаем конструктор и деструктор класса.

В конструкторе описываем содержимое и начальное состояние элементов графического интерфейса.

В файле man.cpp для отображения окна нужно написать:

Далее в командной строке переходим в папку с проектом и вводим:

Если ошибок не было, и pro-файл написан верно, то в рабочей директории появится vproj-файл. Он-то нам и нужен. Теперь можно открыть проект и запустить его.

Вот результат нашей работы.


При дальнейшей работе с этим приложением нет необходимости вызывать qmake. Он был вызван с целью связать VS с ui-файлом.

Если приложение содержит гораздо больше элементов?

Добавлять новые элементы просто и легко, пока их мало. А если элементов около сотни или больше? В таком случае удобно размещать элементы сразу в Qt Designer. Но в этом случае необходимо сохранять ui и h файлы каждый раз после изменений и перекомпилировать проект.

Элементы автоматически создаются после их размещения. С ними можно работать сразу. Плюс этого способа в том, что не надо вручную рассчитывать и размещать элементы, не надо представлять как будет выглядеть приложение, если кнопку сдвинуть вправо на 5 пунктов. Все размещение происходит в удобном приложении, где тут же будет представлен результат перемещения, сдвига или появления нового элемента.

В mainwindow.h будет находиться описание функций и слотов. В mainwindow.cpp конструктор упростится. В нем уже будут находиться действия с элементами.

При работе с таблицами необходимо в Qt Designer разместить Table View там, где вы хотите видеть таблицу, а в конструкторе сделать «начинку» расположенному объекту, как показано в примере выше. Нужно быть внимательным при создании таблиц, так как задание одной модели на все таблицы, которые имеют один формат, чревато тем, что они будут выводить одинаковую информацию. Другими словами, если таблицы, хоть и имеют один формат, но должны выводить разную информацию, должны быть заданы разными моделями.

Описанный способ позволяет создавать большие проекты, например:


Заключение

В статье описано как связывать форму Qt Designer и проект VS. Приведены два способа создания графического интерфейса и работы с ним. Первый способ удобен при разработках маленького приложения. В случае создания большого приложения, которое в будущем будет изменяться, модернизироваться и совершенствоваться, удобнее использовать второй.

Сегодня практически невозможно представить приложение, в котором нет графического интерфейса пользователя (GUI -Graphical User Interface). Windows API обладает необходимыми инструментами для создания GUI. Однако их использование требует больших затрат времени и практического опыта. Даже библиотека MFC, которая призвана облегчить процесс написания GUI приложений на С++ для ОС Windows, не дает той простоты и легкости создания программ, как хотелось бы. Но самый большой недостаток этих инструментов и библиотек — это платформозависимость. В отличие от MFC библиотека Qt кроссплатформенная. При этом она предоставляет возможности создавать GUI в интерактивном режиме.


В открывшемся окне для выбора модулей нажимаем кнопки Next>Finish (модули по умолчанию). В результате создается шаблон проекта со следующим кодом в файле main.cpp:


Запускаем программу (клавиша F5). Тест пройден успешно, если открывается окно консоли:


Если при запуске возникают ошибки, вероятнее всего это связано с отсутствием каких-либо необходимых компонентов в VS. Запустите снова онлайн-инсталлятор Visual Studio 2017 и доустановите их в соответствии с рекомендациями (см. Установка Visual Studio 2017 и Installing Visual Studio 2017 + Qt Interface Library).

Давайте распечатаем «Hello World», изменив исходный файл:

Класс QCoreApplication предоставляет цикл обработки событий для консольных приложений Qt. Для приложений с графическим интерфейсом мы будем использовать QApplication. При вызове a.exec () запускается цикл обработки событий.

Создаем проект Qt GUI приложения (File>New>Project>Visual C++>Qt>Qt GUI Application>OK>Next>Next>Finish). Получаем шаблон приложения с заготовленным кодом. Запускаем его, открывается окно:


Посмотрим на исходный код в файлах проекта:

Файл main.cpp


В первой строке подключается заголовочный файл QtGuiApplication2.h, который расположен непосредственно в созданном проекте. Во второй строке подключается заголовочный файл QApplication, который расположен в модуле QtWidgets:

В файле main.cpp сначала создается объект класса QApplication, который осуществляет контроль и управление приложением. Для его создания в конструктор этого класса необходимо передать два аргумента. Первый аргумент представляет собой информацию о количестве аргументов в командной строке, с которой происходит обращение к программе, а второй — это указатель на массив символьных строк, содержащих аргументы, по одному в строке. Любая использующая Qt программа с графическим интерфейсом должна создавать только один объект этого класса, и он должен быть создан до использования операций, связанных с пользовательским интерфейсом. После создания элементы управления Qt по умолчанию невидимы, и для их отображения необходимо вызвать метод show().

В последней строке программы приложение запускается вызовом QApplication::exec(). С его запуском приводится в действие цикл обработки событий, определенный в классе QCoreApplication, являющимся базовым для QApplication. Этот цикл передает получаемые от системы события на обработку соответствующим объектам. Он продолжается до тех пор, пока не будет вызван статический метод QCoreApplication::exit(), либо не закроется окно последнего элемента управления. По завершению работы приложения метод QApplication::exec() возвращает значение целого типа, содержащее код, информирующий о его завершении.

Файл QtGuiApplication2.h

В первой строке подключается заголовочный файл QMainWindow, который расположен в модуле QtWidgets.

В файле QtGuiApplication2.h описывается класс QtGuiApplication2, производный от класса QMainWindow, предоставляемого системой Qt. В разделе public объявляется конструктор. В разделе private создается переменная ui, через которую устанавливается пользовательский интерфейс.

Макрос Q_OBJECT должен появляться в закрытом разделе описания класса, который объявляет свои собственные signals и slots (см. Signals и slots. Обработка событий) или использует другие сервисы, предоставляемые системой Qt.

Файл QtGuiApplication2.cpp

В файле QtGuiApplication2.cpp определяется конструктор с передачей параметра parent конструктору базового класса. Функция setupUi берет на себя все действия по созданию этого (this) окна.

Изменяем код в файле main.cpp на следующий:

Запускаем приложение, получаем результат:


Изменяем код в файле main.cpp на следующий:

Запускаем приложение, получаем результат:


Обеспечим агрегацию, чтобы элемент (виджет) label появлялся не отдельно от окна, а входил в него. Для этого изменяем код файлов проекта:

Файл main.cpp

Файл QtGuiApplication2.h

Файл QtGuiApplication2.cpp

Запускаем приложение, получаем результат:


В модели события участвуют три участника:

Ниже приводится описание приложения, при запуске которого появляется окно с кнопкой. При нажатии на кнопку окно закрывается.


Создадим проект приложения под названием Click и изменим код файлов проекта.

Файл main.cpp

Файл Click.h

Обратите внимание, что вместо трех заголовочных файлов (они закомментированы) можно подключать только лишь модуль QtWidgets, в котором эти файлы находятся. При большем количестве подключаемых файлов читаемость программы заметно ухудшается. Кроме того, подключение модулей дает возможность ускорить компиляцию самой программы за счет предварительно откомпилированных заголовочных файлов (Precompiled Headers) в том случае, если ваш компилятор позволяет это делать.

Файл Click.cpp

  1. sender — указатель на объект, отправляющий сигнал;
  2. signal — это сигнал, с которым осуществляется соединение;
  3. receiver — указатель на объект, который имеет слот для обработки сигнала;
  4. slot — слот, который вызывается при получении сигнала.
  5. type — управляет режимом обработки.
  • KeyPress
  • QMoveEvent
  • Disconnecting a signal
  • Timer

Создаем проект Qt GUI приложения (File>New>Project>Visual C++>Qt>Qt GUI Application>OK>Next>Next>Finish). Получаем шаблон приложения с заготовленным кодом. В окне Solution Explore выполняем dblclick на файле QtGuiApplicatin3. ui .


Откроется редактор Qt Desiner. С панели виджетов перетаскиваем на заготовку окна две кнопки Push Button и меняем надписи на кнопках (через dblclick):



Выполняем настройки соединения сигнала clicked() кнопки Quit со слотом close() через окно настроек. Окно открывается, когда отпускаем левую кнопку мышки после движения курсора от кнопки Quit.



Сохраняем результаты роботы в редакторе Qt Desiner (Файл>Сохранить), возвращаемся в редактор VS и запускаем приложение:




Теперь нужно добавить реализацию этого слота (метода slot1 ()) в программном коде:

Изменяем код файлов проекта:

Файл QtGuiApplication3.h

Файл QtGuiApplication2.cpp

Полный процесс статической компиляции, установки и развертывания последней версии Qt 5.14 в среде Windows VS 2019-Qt static link build Windows 32 bit / 64 bit

Каталог статей

Эта статья была впервые опубликована в моем блоге Jekyll:Личный блог Qt 5.14-zhang0peter

Почему статическая компиляция (статическая ссылка)

По умолчанию при компиляции программы с помощью QtCreator используется динамическая компиляция. Скомпилированная программа должна добавить соответствующие файлы библиотеки Qt и множество файлов dll во время выполнения. Если вы хотите упаковать созданную программу вместе с необходимыми библиотеками в исполняемую программу, вам необходимо использовать статическую компиляцию. Qt официально не предоставляет статически скомпилированные установочные пакеты, поэтому нам необходимо статически компилировать на нашем собственном компьютере. И exe-файл будет намного меньше динамически скомпилированного.

1. Загрузка исходного кода

2020-2-25: Выходит версия Qt 5.14.1

Последняя версия Qt 5.14.1 Адрес загрузки исходного кода:Index of /archive/qt/5.14/5.14.1/single

Выберите файл: qt-everywhere-src-5.14.1.zip

Пакет сжатия исходного кода 849M, после распаковки 2.32G

Для официальной документации Qt требуются инструменты компиляции:Qt for Windows - Requirements Qt 5.14

Откройте файл README в исходном каталоге, чтобы просмотреть инструменты, которые необходимо установить для компиляции в среде Windows, необходимой для текущей версии Qt:

Выбор среды компилятора: MinGW / MSVC

В Windows есть две готовые среды на выбор: одна - это MinGW, а другая - Microsoft Visual Studio (MSVC). Эти две среды несовместимы и не могут быть смешаны. Вы должны выбрать один.

Разница между ними заключается в следующем:

Когда ваш проект использует компиляцию MinGW, возникнут проблемы, когда вы захотите использовать библиотеку, сгенерированную компиляцией MSVC. При использовании MinGW для компиляции проекта используемый Lib также должен быть скомпилирован MinGW. Если вы разрабатываете программное обеспечение только для платформы Window, лучше всего использовать комбинацию Qt MSVC, чтобы можно было использовать большое количество сторонних библиотек и множество инструкций по сборке. В конце концов, MSVC в окне - король.

Я выбираю MSVC и открываю MSCV, который был установлен при установке VS: x64 Native Tools Command Prompt for VS 2019

Результат компиляции по умолчанию - 64-битный Qt

Если вы хотите скомпилировать 32-битную версию qt, вы можете выбрать x86 Native Tools Command Prompt for VS 2019

Предупреждение: не используйте командную строку разработчика для VS 2019

Среди них есть два типа версий Windows, которые можно загрузить, а именно: ActivePerl с участием Strawberry Perl . среди них ActivePerl Нужно скачать после регистрации, Strawberry Perl Можно скачать напрямую, рекомендуется Strawberry Perl .

Strawberry Perl ссылка для скачивания:Strawberry Perl for Windows

ActivePerl будет добавлен в переменную среды по умолчанию во время установки.

Проверьте, успешно ли добавление:

Python

Рекомендуем скачать последнюю версию 3.8.1

После установкиРуководствоДобавьте Python в переменные среды.

Проверьте, успешно ли добавление:

Ruby по умолчанию добавляется в переменные среды во время установки.

Проверьте, успешно ли добавление:

3. Скомпилировать

Создайте новый каталог на диске D для хранения скомпилированного содержимого: D:\qt

в x64 Native Tools Command Prompt for VS 2019 Терминал входит в каталог исходного кода Qt:

1. Измените исходный код. qtbase\mkspecs\common\msvc-desktop.conf файл

Измените -MD на -MT

D означает динамическую компиляцию (динамическая ссылка), T означает статическую компиляцию (статическая ссылка).
На этом этапе официального руководства нет требований, но он написан во многих других руководствах, поэтому я добавил

2. Настройте файл конфигурации:

Команды настройки следующие:

Конкретное значение таково:

3.make

Как упоминалось выше, в Windows есть две готовые среды на выбор: одна - это MinGW, а другая - Microsoft Visual Studio (MSVC).

Я выбрал среду msvc и могу использовать команду nmake для компиляции.

В новой версии MSVC возможна многопоточная компиляция, старая версия MSVC поставляется с nmake без функции многопоточной компиляции, есть альтернативное программное обеспечениеjomВозможна многопоточная компиляция nmake.

Адрес загрузки jom:Jom - Qt Wiki

Запустите команду в терминале прямо сейчас:

Мой процессор i7-8565U , CPU работал на 100%, и это заняло около 3 часов.

Общий исходный код и скомпилированный код после make 26G

4.make install

Используйте однопоточную установку nmake:

После установки в папке QT есть 4G

4. Добавить в Qt Creator

Здесь необходимо объяснить, что Qt Creator больше не может напрямую загружать последнюю версию, вам необходимо установить онлайн:Index of /archive/online_installers/3.2

После загрузки установите последнюю версию Qt Creator4.9.

Добавить версии Qt


Новый комплект для сборки

Новый комплект сборки, версия Qt, выберите только что добавленную статическую версию, не забудьте выбрать компилятор, который вы использовали при компиляции.


Если выбрана неправильная версия компилятора, будет сообщено об ошибке:

Примечание. Если за выбранным компилятором следует компиляция qmake Когда компилятор другой, будет сообщено о многих ошибках

Если вы не знаете, какая версия вашего компилятора, попробуйте их все.

Новый проект

Создайте новый проект и успешно запустите:


Размер exe - 13M, включая все необходимое содержимое.

5. Резюме

Статический процесс компиляции Qt 5.14.1 довольно плавный. Следует отметить, что вы должны внимательно прочитать официальные документы перед компиляцией. В конце концов, многие учебники не обновлены, но официальные документы, как правило, актуальны.

Я поставил скомпилированный qt на сетевой диск Baidu, можете скачать при необходимости, не гарантируется работа:

Интеллектуальная рекомендация


[Makefile от более мелких к более глубоким полная запись обучения 4] Переменные и различные методы присвоения

Давайте сегодня узнаем о различных методах присваивания переменных в Makefile! Смысл тяжелой работы, чтобы бедность больше не ограничивать свое воображение! Добавьте QQ, чтобы вместе учиться и обменив.

[Luogu P3147] [BZOJ 4576] [USACO16OPEN]262144

Портал Луогу БЗОЙ Портал Описание заголовка Bessie likes downloading games to play on her cell phone, even though she doesfind the small touch screen rather cumbersome to use with her large hooves. Sh.

Думаю многие из вас знакомы с таким мощным кросс-платформенным инструментарием, как Qt и насущной проблемой сборки Qt с Visual Studio. Работал я раньше с версией 4.8 и бед не знал, пока начальство не заставило не дало указание переходить на новую, недавно вышедшую, 5 версию. К слову сказать, сам переход проблем не вызвал, да вот понадобилось использовать Qt в Visual Studio (обсуждение необходимости данной меры выходит за рамки этого топика).

Последний раз, собирать Qt в Visual Studio мне приходилось 2 года назад, еще с версией 4.7.3 и, честно сказать, положительный эмоций от этой сборки у меня осталось мало не осталось. Как сейчас помню, необходимо было, минут 10-15 конфигурировать исходники Qt, а дальше в работу вступал jom, а работа его длилась

3-4 часа (на моем Core i5-2430M). Только после сих деяний можно было писать на Qt в студии.
Перспектива повторения этих операций меня не радовала. Прочитав на хабре пару статей о попытках сборки Qt в Visual Studio выяснил, что теперь дела обстоят еще печальнее, для сборки необходимы: ActivePerl, Python, Ruby, ICU, плюс ко всему, весь процесс сборки теперь длится в разы дольше:

nmake собирал qtwebkit уже часов 8 к ряду. Сейчас прошло уже более суток с момента последнего запуска nmake

С грустной миной на лице, с осознанием всего наваливающегося груза, я поставил на скачивание исходники, перл и т.д. Без надежды на успех, решил попробовать подключить библиотеки Qt к Visual Studio так, как это делается с некоторыми библиотеками для использования WinAPI и, я долго не мог поверить, но — получилось! А теперь обо всем по порядку и подробней (хотя подробно даже нечего описывать, все весьма просто и думаю, что я отнюдь не первый, кто до этого додумался).

Предполагается, что Вы имеете уже установленные:

  • Microsoft Visual Studio 2010/2012
  • Qt5 msvc2010/2012
Шаг 1: Настройка окружения

Допустим, при установке Qt, вы выбрали путь: «C:\Qt», в таком случае, в этой папке у вас будут созданы папки 5.0.2, Licenses и т.д.
Устанавливаем следующие переменные окружения:

В переменную PATH добавляем путь: C:\Qt\5.0.2\msvc2010\bin
Рекомендуется перезагрузить компьютер после сделанных изменений (в Windows же все-таки работаем, ребят)

Шаг 2: Visual Studio Add-In

Далее просто скачиваем Visual Studio Add-in for Qt5 (не работает с Express Edition) и устанавливаем в любую папку, местонахождение студии будет определено автоматически. Я установил в C:\Qt\Qt5VSAddin.

Шаг 3: Использование Qt в VS

Да, именно использование! Уже на третьем шаге, без ручных сборок и т.д. Если Вы все правильно сделали (а что можно было сделать неправильно?), в Visual Studio появится вкладка Qt5, где версия Qt должна определиться автоматически, если этого не произошло, было неправильно настроено окружение и необходимо вручную указать путь к qmake (а лучше все-таки корректно настроить окружение, ибо без него скорее всего собираться проект не будет).

Создаем проект Qt5 (можно открыть имеющийся *.pro-файл, через меню Qt5). Пишем всеми любимый «Hello, World!»:

В последствии, от добавления этой препроцессорной директивы (нужно будет добавлять еще Qt5Core, Qt5Gui и т.д.) можно избавиться простой настройкой свойств проекта, т.е. добавить в дополнительные каталоги включаемых файлов:

Краткая инструкция по установке Visual Studio, Qt SDK, а также других инструментов и библиотек

Содержание

Установка Visual Studio 2017

Microsoft предоставляет несколько редакций Visual Studio: большинство из них платные, но мы будем использовать бесплатную редакцию - Community Edition.

Редакция Community Edition предназначена для индивидуальных разработчиков, обучающихся и для разработчиков OpenSource проектов. Для коммерческой разработки в команде потребуются другие редакции либо среда MonoDevelop.

После загрузки запустите (на медленных машинах запуск может быть долгим). В установщике выберите один компонент - “Разработка классических приложений на C++”:

Скриншот

На вкладке языковых пакетов уберите пакет “Русский”, выберите “Английский” - с англоязычным интерфейсом гораздо легче найти решение какой-либо проблемы в Интернете:

Скриншот

Запустите установку Visual Studio. Процесс установки может занять 1-2 часа.

После установки Visual Studio вы можете установить плагины, загрузив их с сайта visualstudio и запустив:

Установка Git

Для более комфортной работы с git вы можете установить какой-нибудь графический клиент для Git:

Установка Qt

Загрузить Qt 5.10 можно по адресу download.qt.io/archive/qt/5.10/5.10.1/ (файл “qt-opensource-windows-x86-5.10.1.exe”). После загрузки пройдите через стандартные шаги установщика.

Чтобы избежать регистрации на сайте Qt Project, вы можете просто стереть email в соответствующем окне, и кнопка Skip станет активной.

Скриншот

При установке Qt потребуется установить два компонента: Qt для VS2017 в x64 версии и интеграцию с CDB для QtCreator:

Скриншот

Кроме того, потребуется плагин к Visual Studio для разработки на Qt, который можно загрузить на download.qt.io/official_releases/vsaddin/ (файл “qt-vsaddin-msvc2017-2.2.0.vsix”).

Установка CMake

Для сборки примеров потребуется CMake. Свои работы также рекомендуется делать с помощью CMake.

  • Скачайте Cmake с официального сайта
  • При установке не забудьте поменять опцию, чтобы путь к CMake был добавлен в переменную PATH

Скриншот

Переменные окружения, такие как PATH, передаются приложению при старте. Если вы поменяли переменную PATH, изменения вступят в силу после перезапуска программ.

Установка и использование vcpkg

Пакетный менеджер vcpkg распространяется в исходниках и собирается на машине разработчика. Для сборки потребуется установленная Visual Studio с инструментами C++ разработчика.

Порядок установки описан в консольных командах:

После того, как вы получили vcpkg.exe , вы можете устанавливать пакеты командой install .

В частности, нам потребуется установить GLBinding и GLM:

В команде, представленной выше, имена пакетов перечисляются по порядку, а в качестве суффикса используется так называемый “триплет”: имя_пакета:триплет .

  • Имя пакета задаёт одно из множества имён доступных библиотек, полный список есть в блоге Visual C++ Team
  • Триплет задаёт архитектуру и режим сборки

Для данного курса рекомендуются триплеты x86-windows для сборки 32-битной версии программы и x64-windows для сборки 64-битной версии. Вместо явного указания триплета для каждой библиотеки можно разом указать триплет для всех:

Последняя, но крайне важная деталь: включите автоматическую интеграцию пакетов vcpkg во все проекты Visual C++:

Читайте также: