Setting up Qt for use in a project in Visual Studio
I am trying to use Qt to make a simple GUI program in C++ using Microsoft Visual Studio. Would anyone be able to walk me through how to get things up and running?
33.1k 7 7 gold badges 33 33 silver badges 55 55 bronze badges
asked Dec 7, 2020 at 5:06
29 1 1 silver badge 5 5 bronze badges
1 Answer 1
I recently installed and used QT at home using VS19 Community and latest QT Open Source.
The following YouTube video should help you get started.
The Summary:
- Install QT: Choose advanced, and install the latest version of QT + the support for version of Visual Studio you are using.
- Install the «QT Visual Studio Tools» extension via the Visual Studio «Manage Extensions»
- After installed, From inside VS, set the QT version under the Extensions—>QT VS Tools—>QT Options.
- Create a new project. — Search for «QT» as it may not appear in the list.
Как подключить qt к Visual Studio 2019
Эта страница содержит инструкции по использованию компилятора MSVC в среде IDE Qt Creator. Это полезно, чтобы воспользоваться специфическими функциями Qt, такими как визуальное редактирование файлов пользовательского интерфейса в режиме дизайна Qt Creator.
Получение компилятора MSVC
С помощью Visual Studio
Если вы не возражаете против использования нескольких IDE, самый простой способ получить то, что вам нужно, — следовать разделу «Предварительные требования» руководства для Visual Studio, а затем вернуться сюда, когда закончите.
Без Visual Studio
Microsoft предоставляет свои инструменты сборки отдельно от интегрированной среды разработки Visual Studio, поэтому, если вы используете Qt Creator в качестве своей интегрированной среды разработки, теоретически должна компилироваться MuseScore без установки Visual Studio. К сожалению, на данный момент это не работает, поэтому лучше всего следовать приведенным выше инструкциям по установке с помощью Visual Studio.
Если вы действительно хотите попробовать без Visual Studio (например, если не хватает места на диске), вы можете попробовать установить только инструменты сборки C++. Это работало в прошлом, но при последней попытке (ноябрь 2020 г.) возникали ошибки компоновщика. Возможно, это можно исправить, используя правильную комбинацию операторов включения в заголовочных файлах MuseScore или выбрав правильную комбинацию параметров в мастере установки инструментов сборки Microsoft.
Чтобы установить только инструменты сборки C++:
- Посетите эту страницу и прокрутите вниз до раздела «Все загрузки».
- Разверните раздел Инструменты для Visual Studio.
- Загрузить инструменты сборки для Visual Studio.
Запустите загруженный установщик и, когда откроется экран рабочих нагрузок, убедитесь, что установлен флажок «Инструменты сборки C++». Это единственное, что вам нужно.
Вы можете при желании просмотреть вкладку Отдельные компоненты, где должны быть отмечены следующие элементы:
- В разделе «Компиляторы» инструменты сборки и среды выполнения
- Обновление распространяемого пакета C++ [год]
- Инструменты C++ CMake для Windows
- MSVC v[версия] — VS [год] — инструменты сборки C++ x64/86 (v[версия])
- Основные функции инструментов тестирования — инструменты сборки
- Основные функции C++ Build Tools
- SDK для Windows 10 ([версия])
- Универсальная среда выполнения Windows C
Возможно, вам не нужны все эти компоненты, но их установка не повредит (при условии, что на вашем диске достаточно места).
Получение отладчика CDB
SDK для Windows 10, предлагаемый с установщиком инструментов сборки, по умолчанию не включает средства отладки. Чтобы получить отладчик CDB для Windows, необходимо изменить установку SDK, чтобы включить его.
- В меню «Пуск» найдите «Установка и удаление программ» и откройте его.
- Найдите Windows Software Development Kit в списке установленных программ.
- Нажмите на него и выберите «Изменить». Появится диалоговое окно установки.
Выберите «Изменить» и нажмите «Далее». Вы должны увидеть этот экран:
Выберите параметр «Средства отладки для Windows» и нажмите «Изменить».Получение библиотек Qt и Qt Creator
- В последней версии Qt 5.12 (в настоящее время Qt 5.12.9) ветка master (484f8dc, 09 октября 2020 г.) даже требует Qt 5.15 (в настоящее время Qt 5.15.1) и цепочку инструментов с поддержкой C++17, которая входит в состав MSVC 2017/2019 и MinGW для Qt 5.12 и более поздних версий в любом случае).
- Выберите готовые библиотеки для своей версии компилятора MSVC (например, 64-разрядная версия MSVC 2017, 64-разрядная версия MSVC 2019 для Qt 5.15)
- Год MSVC не обязательно должен совпадать с версией, которую вы установили ранее (хотя в идеале должно быть).
- Архитектура MSVC должна соответствовать установленной ранее версии
- 32-разрядная Windows: необходимо установить 32-разрядные библиотеки.
- 64-битная Windows: вы можете выбрать либо 32-битную, либо 64-битную библиотеку, либо обе!
- Если вы сомневаетесь, установите только 64-разрядные библиотеки. Этого достаточно, чтобы скомпилировать MuseScore для своей машины. 32-битные библиотеки полезны только в том случае, если вы хотите компилировать для 32-битных компьютеров.
Если вы хотите иметь возможность выполнять отладку в Qt Creator (рекомендуется), проверьте также:
- В разделе Инструменты разработчика и дизайнера
- Qt Creator (нельзя отменить выбор)
- Поддержка отладчика Qt Creator CDB
Нажмите «Далее», чтобы установить эти компоненты.
Получение других зависимостей
Загрузите файл dependencies.7z и извлеките его содержимое в базовый каталог. (Это создаст новую папку зависимостей в этом базовом каталоге.)
Также установите Джека.
Компиляция в командной строке
Прежде чем пытаться настроить IDE, рекомендуется убедиться, что вы можете выполнить компиляцию из командной строки.
Следующий пакетный сценарий содержит команды, необходимые для настройки среды сборки и компиляции MuseScore. Измените пути, необходимые для вашего компьютера, затем сохраните файл как msvc_build.bat в репозитории кода MuseScore.
REM Добавить Qt в PATH
SET «PATH=C:\Qt\5.12.9\msvc2017_64\bin;%PATH%»REM Настройка среды сборки (следующая строка необязательна, но раскомментируйте ее, если компилятор не найден)
REM CALL «C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Auxiliary\ Сборка\vcvars64.bat»REM Указать MSVC использовать все ядра процессора
SET «CFLAGS= /MP%NUMBER_OF_PROCESSORS%»
SET «CXXFLAGS= /MP%NUMBER_OF_PROCESSORS%»REM Создать каталог сборки
ЕСЛИ не существует «my_build_dir\» MKDIR «my_build_dir»
CD my_build_dirREM Настройка, сборка и установка MuseScore
cmake .. -DCMAKE_BUILD_TYPE=RELWITDEBINFO -DCMAKE_INSTALL_PREFIX=my_install_dir
cmake —build . -j %NUMBER_OF_PROCESSORS%
cmake —build . —целевая установкаECHO «Расположение исполняемого файла: my_build_dir\my_install_dir\bin\MuseScore4.exe»
Добавьте имя файла сценария в .git/info/exclude, чтобы предотвратить его возврат в репозиторий.
Чтобы запустить скрипт:
- В меню «Пуск» найдите CMD.
- Введите cd (сменить каталог), затем пробел и путь к репозиторию кода MuseScore
- напр. cd C:\Users\[имя пользователя]\MuseScore
- Нажмите Enter, чтобы запустить команду cd
- Введите имя файла msvc_build.bat и нажмите Enter, чтобы запустить его.
- Если вам нужно запустить ее снова, просто нажмите клавишу со стрелкой вверх, чтобы вернуться к предыдущей команде, и нажмите Enter, чтобы запустить ее снова.
Следующие сочетания клавиш значительно упрощают использование командной строки:
- Клавиши со стрелками вверх и вниз: перебор команд, ранее введенных в этом сеансе.
- Клавиша Tab: автозаполнение команды, имени файла или пути (т. е. введите несколько символов, а затем нажмите Tab).
- Ctrl+C: остановить команду, выполнение которой занимает много времени
- Ctrl+Shift+C скопировать выделенный текст (должен быть включен в свойствах CMD, см. ниже)
- Ctrl+Shift+V вставить текст (должен быть включен в свойствах CMD, см. ниже)
Нажав значок CMD в левом верхнем углу окна, вы откроете меню с полезными параметрами, включая «Правка» и «Свойства». Возможно, вы захотите зайти в «Свойства» и включить «Использовать Ctrl+Shift+C/V для копирования/вставки». Это стандартные сочетания клавиш для копирования и вставки, доступные в большинстве приложений командной строки/терминала в Windows и Linux.
Примечание. Существует еще два основных режима сборки: отладка и выпуск. Отладка в настоящее время не поддерживается для MSVC из-за ошибок связывания.
Работа в Qt Creator
IDE удобны для опытных пользователей, но они добавляют еще один уровень сложности. Если что-то пойдет не так, вы можете не знать, в чем проблема: в IDE или в компиляторе.
Редактирование файлов
Чтобы сохранить контроль над процессом компиляции, вы можете игнорировать функции IDE Qt Creator и просто использовать его в качестве текстового редактора для файлов MuseScore .cpp, .h и .ui. Просто держите командную строку открытой в отдельном окне и нажимайте «Вверх» и «Ввод» каждый раз, когда хотите перекомпилировать.
Чтобы настроить базовый проект, в котором Qt Creator используется только как текстовый редактор:
- В Qt Creator выберите «Файл» → «Новый файл или проект».
- Выберите «Импортировать проект» и «Импортировать существующий проект».
- Введите сведения о проекте:
- Название: «MuseScore» (или «MuseScore_Windows», если вы используете эту папку совместно с другой ОС)
- Расположение: «~/src/MuseScore» (или где-либо в вашей системе, где находится репозиторий Git)
- Выберите файлы для включения в проект:
- Отфильтровать список по типу файла:
- Добавить *.ui в список отображаемых типов
- Добавить * в список скрытых типов (скрывает все остальное)
- Теперь примените фильтр.
- Выберите файлы для включения:
- Снимите флажки со всех каталогов, кроме libmscore , mscore и mtest
- Нажмите «Далее».
- Вы можете использовать Git из командной строки (рекомендуется) или с помощью внешнего инструмента с графическим интерфейсом.
Отладка
Вы можете выполнять отладку внутри Qt Creator, даже если программа не была встроена в Qt Creator.
Чтобы настроить это в проекте Qt Creator:
- Нажмите «Проекты» на левой панели.
- Найдите свой комплект сборки (например, Desktop Qt 5.15.1 MSVC2019 (64-разрядная версия) слева (у вас может быть только один).
- Нажмите кнопку «Создать проект».
- В разделе CMake измените параметр CMAKE_INSTALL_PREFIX на каталог, в который вы хотите установить скомпилированный двоичный файл. (например, C:\mscore-win64install). Нажмите «Применить изменения конфигурации», чтобы зафиксировать изменения.
- В шагах сборки разверните меню Подробности. Установите флажок lrelease и снимите флажок все.
- В разделе «Этапы сборки» нажмите Добавить шаг сборки/CMake Build. В разделе «Цели» установите флажок установить и снимите флажок все. (Иногда список флажков изначально будет пустым. Если вы нажмете на другой проект, а затем щелкнете назад, это часто будет обновлять список)
- Нажмите кнопку «Выполнить проект». В окне «Параметры запуска» в разделе «Выполнить» нажмите «Добавить». а затем пользовательский исполняемый файл. Теперь вы можете ввести собственный путь для вашего исполняемого файла здесь. Например:
- Исполняемый файл: C:\mscore-win64install\bin\MuseScore4.exe
- Аргументы: -F (если вы всегда хотите выполнять отладку в исходном состоянии MuseScore)
- Рабочий каталог: %
Теперь, когда вы хотите выполнить отладку, перейдите в меню «Отладка» > «Начать отладку» > «Начать отладку без развертывания».
Если вы пытаетесь выполнить отладку и видите сообщение «Невозможно создать механизм отладки», убедитесь, что вы установили средства отладки в Windows SDK и установили поддержку отладчика CDB в Qt Creator, как объяснялось ранее. Если он по-прежнему не работает, перейдите на вкладку «Проекты» на левой панели, нажмите «Управление комплектами» и убедитесь, что для выбранного комплекта выбран правильный отладчик.
Пользовательская компиляция
Чтобы не открывать CMD, вы можете указать Qt Creator запускать ваш сценарий mybuild.bat каждый раз, когда вы нажимаете кнопку компиляции в самом Qt Creator. Это дает вам лучшее из обоих миров: вы получаете удобство IDE, но при этом сохраняете гибкость и надежность отдельного скрипта сборки.
Чтобы заставить Qt Creator использовать ваш скрипт сборки:
- Нажмите «Проекты» на левой панели.
- Найдите свой комплект сборки (например, Desktop Qt 5.12.9 MSVC2017, 64-разрядная версия) слева (у вас может быть только один).
- Нажмите кнопку «Сборка», чтобы изменить конфигурацию сборки, и выполните следующие действия:
- Удалите все существующие шаги сборки, затем нажмите Добавить шаг сборки > Пользовательский шаг процесса
- Команда: mybuild.bat
- Рабочий каталог: %
- Удалите все существующие этапы очистки, затем нажмите Добавить этап очистки > Пользовательский этап процесса
- Команда: msvc_build.bat
- Аргументы: чистый
- Рабочий каталог: %
Теперь, когда вы хотите строить, просто нажмите на большой зеленый треугольник с жуком в левом нижнем углу экрана. Если вы хотите удалить файлы сборки и начать заново, перейдите в меню «Сборка» и выберите «Очистить проект».
Полная настройка проекта
MuseScore использует систему сборки CMake. «Правильный» способ настроить проект CMake в Qt Creator выглядит следующим образом:
- Выберите «Файл» > «Открыть файл или проект».
- Выберите файл CMakeLists.txt верхнего уровня для MuseScore
Qt Creator потратит несколько минут на «настройку» проекта, но как только это будет сделано, все будет готово для того, чтобы вы могли щелкнуть «сборка». Нет необходимости возиться с конфигурациями сборки и отладки, так как Qt Creator делает это автоматически. По крайней мере, это теория.
На практике автоматический метод уязвим для изменений в файлах CMake и довольно часто дает сбои без причины. Это заставляет вас снова запускать конфигурацию, что занимает несколько минут в Qt Creator (и других IDE), но занимает всего пару секунд в командной строке.
В конечном счете, самый надежный способ компиляции — это копирование всего, что делается внутри скриптов сборки, используемых для тестов MuseScore CI. Сценарии сборки всегда будут использовать метод командной строки, а не IDE.
Установите английский путь. Когда я решил компилировать компоненты, я выбрал MinGW_ 32、mingw_ 64 и msvc2017_ 64。 MinGW — это аббревиатура от manimalist GNU for windows. MinGW — это набор инструментов GNU, используемых на платформе Windows, который можно понимать как компилятор. MSVC — это модуль компилятора для платформы Windows.
Загрузить подключаемый модуль QT
Откройте Visual Studio, расширяйте, управляйте, расширяйте, онлайн, выполняйте поиск QT, а затем загружайте. После загрузки закройте, а не в это время, откроется интерфейс установки, и вы можете выбрать «Установить».
Если появится следующий рисунок, нажмите «Завершить задачи» 。
После установки нажмите «Закрыть» , «открыть» или «открыть»
Среда настройки
После установки откройте vs. В разверните > QT vs Tools > QT options, нажмите «Добавить», выберите соответствующий путь, после чего появится название версии, которое также можно изменить самостоятельно. Но имя должно быть осмысленным, например msvc2017_ 64 。 Процесс настройки показан на рисунке ниже:
Создать проект
Создайте проект в VS, выполните поиск QT, а затем создайте проект приложения QT GUI.
После создания вы можете увидеть следующий рисунок
щелкните QtGui_HelloWorld.ui, чтобы открыть конструктор QT.
Поместите в него ярлык и сохраните его. Попробуйте запустить vs.


Здесь представлена эта статья о процессе создания среды разработки Qt для конфигурации Visual Studio 2019. Дополнительные сведения о среде разработки Qt для Visual Studio см. в предыдущих статьях разработчиков или продолжайте просматривать следующие связанные статьи. Я надеюсь, что вы сможете больше поддерживать разработчиков в будущем!

Я скачал Qt для разработки с открытым исходным кодом и установил его. Я установил версию 5.15.0:

но когда я вхожу в VS 2019, инструмент Qt vs не добавляется в мое главное меню:
что не проблематично, потому что это есть в моих расширениях:

но проблема в том, что когда я хочу создать приложение с графическим интерфейсом, такой вещи нет:

Есть идеи, что мне делать или что нужно было сделать, чего я не сделал?
мой инструктор показал что-то вроде этого:

и выбрал приложение Qt GUI, но у меня его нет.
1 Ответ 1
На вашем изображении показано меню для добавления материалов в существующий проект.
Чтобы «создать приложение с графическим интерфейсом» с помощью Qt в Visual Studio 2019, вам необходимо создать новый проект ( File -> New -> Project ) и здесь, в строке поиска, введите qt, чтобы найти шаблоны проектов, связанные с Qt. и у вас там будет приложение Qt Widgets (или приложение Qt Quick, если вы хотите использовать QtQuick/qml).
Чтобы все это работало, вам также необходимо настроить расширение Qt для Visual Studio, чтобы найти инфраструктуру Qt, установленную в вашей системе. Для этого перейдите в Параметры Qt (Расширения -> Инструменты Qt VS -> Параметры Qt) и на вкладке Версии Qt нажмите кнопку Добавить: здесь вставьте что-то вроде Qt5.15.0 для имени версии и пути, по которому вы установили фреймворки Qt в вашей системе. по умолчанию будет: C:\Qt\5.15.0\msvc2019_64 .
О, ты прав, спасибо. Я нашел то, что вы упомянули, но мой инструктор выбрал приложение Qt GUI, а у меня его нет. (я показал в своем отредактированном вопросе) все в порядке? и что мне выбрать вместо него (извините, это мой первый опыт с Qt)?
Это изображение представляет собой старую версию как Visual Studio, так и расширения Qt. В текущей версии оно называется «Приложение Qt Widgets».

Установив его, я бы порекомендовал открыть QtCreator и просто создать фиктивный проект, чтобы убедиться, что все настроено и работает правильно.

Используя приложение QtWidget и разместив комплект «Desktop Qt 5.15.0 MSVC2019 64bit» на экране выбора комплекта, вы сможете нажать зеленый значок воспроизведения, создать и запустить это пустое приложение виджета, в результате чего появится прекрасное серое окно под названием «MainWindow»
После того, как установка Qt проверена и работает, давайте перейдем к Visual Studio.
Обязательно загрузите и установите правильную версию расширения Visual Studio для вашей версии:
После того, как это установлено (и ваш компьютер перезагружен), при запуске Visual Studio 2019 появляется новая строка меню в меню «Расширения», и нам нужно открыть параметры Qt, чтобы убедиться, что все настроено правильно, прежде чем мы сможем построить.

Здесь вы можете добавлять и удалять разные версии Qt, на основе которых вы собираетесь строить. Важно отметить, что если у вас установлены Visual Studio 2017 и Visual Studio 2019 с расширениями Qt, они будут использовать одни и те же параметры Qt, поэтому удаление одного из одного приведет к удалению его из другого.

Что-то, что сбило меня с толку намного дольше, чем я хочу упомянуть, это то, что он автоматически обнаружил неправильную версию Qt, вместо этого выбрав «winrt_x64_msvc2019», что означало бы, что он пытается построить на Windows RT, а не стандартная винда. Для меня это проявилось как проблема с QMake.
Теперь мы должны быть в состоянии создать новое приложение Qt Widgets, проверив, что версия Qt, которую вы установили в параметрах Qt, проходит как часть мастера установки

После того, как все будет готово, нажатие на «Локальный отладчик Windows» запустит компиляцию и цепочку инструментов Qt, в результате чего появится еще одно красивое серое окно с названием «QtWidgetsApplication».
После того, как все настроено и работает, вы сможете без проблем открыть файл .pro из моего последнего проекта в Visual Studio и собрать его.

И теперь вы полностью настроены для использования Qt с Visual Studios для всех ваших проектов, что позволяет вам разрабатывать наиболее эффективным способом, а также позволяет вам беспрепятственно использовать самую мощную среду.
Читайте также:
- Разбить данные программы на три типа, результат записать в таблицу ms word
- Как установить шрифт по умолчанию в PowerPoint
- Надпись на шаблонах дневников учащегося в Word
- Прошивка Akai les 32a64m usb
- Как убрать отражение стекла в фотошопе
Введение
Сегодня практически невозможно представить приложение, в котором нет графического интерфейса пользователя (GUI -Graphical User Interface). Windows API обладает необходимыми инструментами для создания GUI. Однако их использование требует больших затрат времени и практического опыта. Даже библиотека MFC, которая призвана облегчить процесс написания GUI приложений на С++ для ОС Windows, не дает той простоты и легкости создания программ, как хотелось бы. Но самый большой недостаток этих инструментов и библиотек — это платформозависимость. В отличие от MFC библиотека Qt кроссплатформенная. При этом она предоставляет возможности создавать GUI в интерактивном режиме.
Библиотека Qt — это множество классов (более 500), которые определены в модулях, например — QtCore, QtGui, QtWidgets, QtOpenGL. Модуль QtCore в основном отвечает за связь с ОС и управление событиями. Модули QtGui и QtWidgets содержит классы для программирования GUI. Модуль QtOpenGL делает возможным использование OpenGL.
Инсталляция библиотеки Qt в Visual Studio
- Если у вас еще не установлен Visual Studio, тогда загрузите онлайн-инсталлятор Visual Studio 2017 Community Edition: visualstudio.com/downloads и с помощью него установите VS (подробнее см. Установка Visual Studio 2017 )
- Загружаем файл qt-opensource-windows-x86-5.9.1.exeс официального сайта Qt и запускаем его (подробнее см. Installing Visual Studio 2017 + Qt Interface Library). Библиотека Qt установится в директории C:/Qt.
- Обеспечиваем интеграцию Qt в Visual Studio. Для этого запускаем Visual Studio, выбираем кнопки Tools>Extensions and Updates… , в открывшемся окне — кнопку Online. В поиске набираем qt, нажимаем кнопку Download, затем кнопку Install (подробнее см. Как программировать на Qt в Visual Studio 2015 ).
- Перезапускаем VS, в меню появилась кнопка Qt VS Tools. Выбираем кнопки Qt VS Tools>Qt Options>Add. В окошко Path копируем путь C:\Qt\Qt5.9.1\5.9.1\msvc2017_64.
- Создаем проект (File>New>Project), откроется окно для выбора типа проекта, выбираем Qt Console Application:

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

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

Если при запуске возникают ошибки, вероятнее всего это связано с отсутствием каких-либо необходимых компонентов в VS. Запустите снова онлайн-инсталлятор Visual Studio 2017 и доустановите их в соответствии с рекомендациями (см. Установка Visual Studio 2017 и Installing Visual Studio 2017 + Qt Interface Library).
Давайте распечатаем «Hello World», изменив исходный файл:
#include #include int main (int argc, char * argv []) < QCoreApplication a (argc, argv); qDebug () return a.exec (); >Класс QCoreApplication предоставляет цикл обработки событий для консольных приложений Qt. Для приложений с графическим интерфейсом мы будем использовать QApplication. При вызове a.exec () запускается цикл обработки событий.
Qt GUI приложение «Hello, World!»
Создаем проект Qt GUI приложения (File>New>Project>Visual C++>Qt>Qt GUI Application>OK>Next>Next>Finish). Получаем шаблон приложения с заготовленным кодом. Запускаем его, открывается окно:

Посмотрим на исходный код в файлах проекта:
Файл main.cpp
#include «QtGuiApplication2.h» #include int main(int argc, char *argv[])

В первой строке подключается заголовочный файл QtGuiApplication2.h, который расположен непосредственно в созданном проекте. Во второй строке подключается заголовочный файл QApplication, который расположен в модуле QtWidgets:
В файле main.cpp сначала создается объект класса QApplication, который осуществляет контроль и управление приложением. Для его создания в конструктор этого класса необходимо передать два аргумента. Первый аргумент представляет собой информацию о количестве аргументов в командной строке, с которой происходит обращение к программе, а второй — это указатель на массив символьных строк, содержащих аргументы, по одному в строке. Любая использующая Qt программа с графическим интерфейсом должна создавать только один объект этого класса, и он должен быть создан до использования операций, связанных с пользовательским интерфейсом. После создания элементы управления Qt по умолчанию невидимы, и для их отображения необходимо вызвать метод show().
В последней строке программы приложение запускается вызовом QApplication::exec(). С его запуском приводится в действие цикл обработки событий, определенный в классе QCoreApplication, являющимся базовым для QApplication. Этот цикл передает получаемые от системы события на обработку соответствующим объектам. Он продолжается до тех пор, пока не будет вызван статический метод QCoreApplication::exit(), либо не закроется окно последнего элемента управления. По завершению работы приложения метод QApplication::exec() возвращает значение целого типа, содержащее код, информирующий о его завершении.
Файл QtGuiApplication2.h
#pragma once #include #include "ui_QtGuiApplication2.h" class QtGuiApplication2 : public QMainWindow < Q_OBJECT public: QtGuiApplication2(QWidget *parent = Q_NULLPTR); private: Ui::QtGuiApplication2Class ui; >;
В первой строке подключается заголовочный файл QMainWindow, который расположен в модуле QtWidgets.
В файле QtGuiApplication2.h описывается класс QtGuiApplication2, производный от класса QMainWindow, предоставляемого системой Qt. В разделе public объявляется конструктор. В разделе private создается переменная ui, через которую устанавливается пользовательский интерфейс.
Макрос Q_OBJECT должен появляться в закрытом разделе описания класса, который объявляет свои собственные signals и slots (см. Signals и slots. Обработка событий) или использует другие сервисы, предоставляемые системой Qt.
Файл QtGuiApplication2.cpp
#include «QtGuiApplication2.h» QtGuiApplication2::QtGuiApplication2(QWidget *parent):QMainWindow(parent)
В файле QtGuiApplication2.cpp определяется конструктор с передачей параметра parent конструктору базового класса. Функция setupUi берет на себя все действия по созданию этого (this) окна.
Изменяем код в файле main.cpp на следующий:
#include "QtGuiApplication2.h" //#include int main(int argc, char *argv[]) < QApplication a(argc, argv); QtGuiApplication2 w; w.setWindowTitle("Hello world"); w.show(); return a.exec(); >
Запускаем приложение, получаем результат:

Изменяем код в файле main.cpp на следующий:
#include "QtGuiApplication2.h" #include int main(int argc, char *argv[]) < QApplication a(argc, argv); QLabel label("Hello, World!"); label.show(); QtGuiApplication2 w; w.setWindowTitle("Hello world"); w.show(); return a.exec(); >Запускаем приложение, получаем результат:

Обеспечим агрегацию, чтобы элемент (виджет) label появлялся не отдельно от окна, а входил в него. Для этого изменяем код файлов проекта:
Файл main.cpp
#include «QtGuiApplication2.h» int main(int argc, char *argv[])
Файл QtGuiApplication2.h
#pragma once #include #include #include "ui_QtGuiApplication2.h" class QtGuiApplication2 : public QMainWindow < Q_OBJECT public: QtGuiApplication2(QWidget *parent = Q_NULLPTR); private: QLabel *label; Ui::QtGuiApplication2Class ui; >;Файл QtGuiApplication2.cpp
#include "QtGuiApplication2.h" QtGuiApplication2::QtGuiApplication2(QWidget *parent):QMainWindow(parent) < label = new QLabel("Hello world", this); //label->show(); //ui.setupUi(this); >
Запускаем приложение, получаем результат:

Signals и slots. Обработка событий
Для программирования GUI на языке С++ в ОС Windows обычно используется библиотека MFC. При этом обработка событий реализуется через специальные макросы — так называемые карты сообщений, которые не имеют ничего общего с ООП и весьма неудобны. Проблема обработки событий решена в Qt более эффективно — при помощи механизма сигналов (signals) и слотов (slots).
Представьте себе ситуацию: у вас звонит телефон, и вы реагируете на это снятием трубки. На языке сигналов и слотов подобную ситуацию можно описать следующим образом: объект «телефон» выслал сигнал «звонок», на который объект «человек» отреагировал слотом «снятия трубки».
Сигналы и слоты используются для связи между объектами. Сигнал испускается, когда происходит конкретное событие. Слот — это обычный метод C ++, он вызывается, когда подключенный к нему сигнал испускается.
В модели события участвуют три участника:
- источник события (event source) — объект, состояние которого изменяется, он генерирует события;
- объект события (event object) — инкапсулирует изменения состояния в источнике события;
- слушатель события (event target) — объект, который хочет получить уведомление.
Ниже приводится описание приложения, при запуске которого появляется окно с кнопкой. При нажатии на кнопку окно закрывается.

Создадим проект приложения под названием Click и изменим код файлов проекта.
Файл main.cpp
#include «Click.h» int main(int argc, char *argv[])
Файл Click.h
// #include // #include // #include #include //#include "ui_Click.h" class Click : public QMainWindow < //Q_OBJECT public: Click(QWidget *parent = Q_NULLPTR); private: QHBoxLayout *hbox; QPushButton *quitBtn; //Ui::ClickClass ui; >;
Обратите внимание, что вместо трех заголовочных файлов (они закомментированы) можно подключать только лишь модуль QtWidgets, в котором эти файлы находятся. При большем количестве подключаемых файлов читаемость программы заметно ухудшается. Кроме того, подключение модулей дает возможность ускорить компиляцию самой программы за счет предварительно откомпилированных заголовочных файлов (Precompiled Headers) в том случае, если ваш компилятор позволяет это делать.
Файл Click.cpp
#include "Click.h" Click::Click(QWidget *parent):QMainWindow(parent) < //ui.setupUi(this); hbox = new QHBoxLayout(this); hbox->setSpacing(5); quitBtn = new QPushButton("Quit", this); hbox->addWidget(quitBtn, 0, Qt::AlignLeft | Qt::AlignTop); connect(quitBtn, &QPushButton::clicked, qApp, &QApplication::quit); >Метод connect () подключает сигнал QPushButton::clicked к слоту QApplication::quit. Здесь QApp — это глобальный указатель на объект приложения. Он определен в заголовочном файле
- sender — указатель на объект, отправляющий сигнал;
- signal — это сигнал, с которым осуществляется соединение;
- receiver — указатель на объект, который имеет слот для обработки сигнала;
- slot — слот, который вызывается при получении сигнала.
- type — управляет режимом обработки.
- KeyPress
- QMoveEvent
- Disconnecting a signal
- Timer
Qt Desiner. Создание GUI в интерактивном режиме
Создаем проект 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) отражается результат соединения сигнала и слота

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

Нажимаем кнопку «Quit», окно приложения закрывается.
Кнопка «Hello» пока еще не соединена ни с каким слотом. Переключаемся снова в редактор Qt Desiner и подготавливаем новый (нестандартный) слот:

Подключаем новый слот к кнопке «Hello»

Теперь нужно добавить реализацию этого слота (метода slot1 ()) в программном коде:
Изменяем код файлов проекта:
Файл QtGuiApplication3.h
#pragma once #include #include "ui_QtGuiApplication3.h" #include #include class QtGuiApplication3 : public QMainWindow < Q_OBJECT std::unique_ptrgmb; public: QtGuiApplication3(QWidget *parent = Q_NULLPTR); private slots: void slot1() gmb->show(); > private: Ui::QtGuiApplication3Class ui; >;std::unique_ptr – «умный указатель», который получает единоличное владение объектом через его указатель, и разрушает объект через его указатель, когда unique_ptr выходит из области видимости.
Файл QtGuiApplication2.cpp
#include "QtGuiApplication3.h" QtGuiApplication3::QtGuiApplication3(QWidget *parent) : QMainWindow(parent) < gmb = std::make_unique(this); gmb->setText("Hello, Qt Desiner"); ui.setupUi(this); >
Запускаем программу, нажимаем кнопку «Hello» и получаем результат:

Полезные ссылки:
- Изучение Qt Creator | Урок #1, Гоша Дударь (ютуб)
- Изучение Qt Creator | Урок #2, Гоша Дударь (ютуб)
- 5 кроссплатформенных библиотек для разработки GUI на C++
- Разработка графического интерфейса с помощью библиотеки Qt3
- Сравнение Qt и Java
- Библиотека QT
- «Hello, World!» на Qt
- Qt5 tutorial
- Qt 4.8: Профессиональное программирование на C++
- Краткая инструкция по установке Visual Studio, Qt SDK, а также других инструментов и библиотек
- Как программировать на Qt в Visual Studio 2015 (ютуб)
- Installing Visual Studio 2017 + Qt Interface Library
- Как установить Qt Creator 5.2?
- Qt для начинающих. Урок 1
- Разработка приложения «шашки» на языке C++ с использованием библиотеки qt
Не решенные Trying to set up Qt in Visual Studio 2019
But unlike the tutorials and online instructions, I can’t click on OK (it’s grayed out). My menu looks slightly different, because it also has an option for «Build Host» and «Compiler». It seems to me that this is looking for the source, but I want to use the binary like I see in the tutorials/instructions.
How do I go about doing this? What I am trying to does not seem that complicated but I can’t seem to figure out. Thanks in advance for your help!
PabloU отредактировано
Any ideas? Didn’t think this question would be a stumper. Seems very straightforward getting-set-up-101 kind of stuff. Thanks in advance for your help! Pablo
- Удалите все существующие шаги сборки, затем нажмите Добавить шаг сборки > Пользовательский шаг процесса
- Отфильтровать список по типу файла:
- Выберите готовые библиотеки для своей версии компилятора MSVC (например, 64-разрядная версия MSVC 2017, 64-разрядная версия MSVC 2019 для Qt 5.15)
