Введение в Qt
Qt является кроссплатформенным (не зависящим от платформы/ОС) фреймворком для разработки приложений на языке С++. С помощью Qt были разработаны такие известные приложения, как: KDE, Opera, Google Earth и Skype. Впервые Qt был опубликован в мае 1995 года.
Qt5 подразумевает двойное лицензирование, а это означает, что Qt может быть использован в некоммерческих целях для создания приложений с открытым исходным кодом, а также как лицензия для коммерческих клиентов. За счет использования собственного фреймворка и мощного инструментария Qt позволяет быстро и удобно создавать собственные кроссплатформенные приложения. Кроме того, команды разработчиков получают возможность работать на разных платформах, используя при этом общие инструменты для разработки и отладки. Весь инструментарий Qt с открытым исходным кодом вы можете найти на сайте qt.io.
Изначально Qt был разработан норвежской компанией по разработке программного обеспечения Trolltech. В 2008 году компанию приобрела Nokia. Спустя четыре года в августе 2012 программные технологии Qt выкупила финская компания-разработчик Digia. Сейчас Qt развивается компанией QT Company, которая является дочерней компанией Digia, и как проект Qt под открытым исходным кодом с участием отдельных разработчиков и фирм.
Установка Qt 5
Шаг 1. Скачиваем дистрибутив.
Зайдем на официальный Qt в раздел Скачать и увидим две секции: онлайн-инсталляторы Qt и офлайн-инсталляторы. При попытке установки Qt для Windows онлайн у меня возникала ошибка загрузки, поэтому перейдем к офлайн-секции. Выберем Qt 5.5.1 for Windows 32-bit (MinGW 4.9.2, 852 MB), то есть сборку на основе компилятора MinGW.
Возможно, вам более удобен компилятор MSVC 2013, например. Для него установка аналогична, только требует Visual Studio 2013. О возможных проблем с VS, связанных с корректной работой в Qt Creator, читайте далее.
Шаг 2. Установка
Запустим qt-opensource-windows-x86-mingw492-5.5.1.exe. Это может занять полминуты. На приветствие ответим нажатием кнопки Далее.
На предложение создать аккаунт или залогиниться можно ответить отказом, то есть выбрать Пропустить (Skip). Когда я пробовал установить Qt через онлайн-инсталлятор, то на всякий случай создал аккаунт. Не помогло.
Укажем директорию для установки
Выбор компонентов установки оставим по умолчанию
Далее согласимся с лицензионным соглашением, укажем новый пункт в главном меню Windows и приступим к установке.
Шаг 3. Проверка работоспособности Qt Creator.
Запустим Qt Creator. Для этого можно в главном меню в пункте «Все программы» найти Qt 5.5.1 и выбрать Qt Creator (Community). В появившемся окне выберем Новый проект и далее Приложение Qt Widgets
Затем укажем название проекта и директорию
В выборе комплекта оставим все по умолчанию
Информацию о классе оставим без изменений
И в последнем шаге «Управление проектом» оставим значения по умолчанию, то есть сразу выбираем «Завершить».
Далее в Редакторе выберем файл mainwindow.ui в разделе Формы
И перетащим на появившуюся форму компонент Push Button
Далее кликнем правой клавишей мыши на появившуюся кнопку и выберем из меню пункт «Перейти к слоту…» и выберем clicked().
В появившемся окне добавим код ui->pushButton->setText(«Тест кодировки»); Запустим компилятор (Ctrl+R или зеленый треугольник в левом вертикальном меню, третий снизу). Лучший результат: появится форма с кнопкой PushButton, после клика на которую ее имя изменится на «Тест кодировки». Если же вы увидите какие-то непонятные символы, то смотрите Шаг 4.
Далее перейдем в Редактор в файл mainwindow.cpp и в строке ui->pushButton->setText(«Тест кодировки»); удалим, например, букву s. Запустим компилятор еще раз. В разделе Проблемы должны увидеть следующее сообщение:
Если вместо такого текста вы видите что-то непонятное, то смотрите Шаг 4.
Шаг 4. Устранение проблем
а) проблема LNK1123: сбой при преобразовании в COFF: файл недопустим или поврежден
В файле .pro добавить строку QMAKE_LFLAGS += /INCREMENTAL:NO и после этого обязательно удалить папку build_…
Можно еще поставить сервис-пак на Visual Studio.
б) проблемы с кодировкой на форме
Выберем в верхнем меню Инструменты -> Параметры и проверим, чтобы в Текстовом редакторе на вкладке Поведение была указана кодировка файлов utf-8.
Если проблема осталась, то можно попробовать такие варианты:
1 | QString::fromLocal8Bit(«Тест кодировки»); |
или
1 |
QTextCodec langcodec=QTextCodec::codecForName(«CP1251»); QTextCodec::setCodecForTr(langcodec); QObject::tr(«Тест кодировки») |
или
1 | trUtf8(«Тест кодировки») |
в) проблема с кодировкой в «Проблемы»
Ищите решение, связанное с модифицированным jom.exe
г) другие проблемы
Выберем в верхнем меню Инструменты -> Параметры и проверим, чтобы в «Сборка и запуск» на вкладках Отладчики, Компиляторы и Комплекты не было ошибок. Кстати, некоторые работают и без отладчика, то есть предупреждения на этой вкладке можно игнорировать.
Загрузка и установка Qt
Загрузка и запуск Qt Installer
Проскрольте открывшуюся страницу вниз. В правой части экрана внизу вы увидите надпись «Downloads for open source users», а под ней — кнопку Go open source. Жмите на неё.
Далее вас перенаправит на страницу загрузки онлайн-установщика Qt. Найдите на ней кнопку Download и нажмите на неё
Подождите немного, пока в нижней части экрана не появится сообщение
Теперь смело можете нажать на кнопку Выполнить.
Установка Qt
Перед вами окно приветствия онлайн-установщика Qt. Здесь вы можете ознакомиться с условиями использования Qt, узнать какую лучше выбрать лицензию для вашей программы на Qt, а также ознакомиться с информацией по дополнительным платным услугам и возможностях аккаунта Qt. Если вам это не интересно, сразу жмите кнопку Next.
Создание аккаунта Qt
В следующем окне вам предложат создать аккаунт Qt. Процедура стандартная. Просто введите свой адрес электронной почты, придумайте произвольный пароль и подтверждение. На указанный адрес будет направлено письмо для верификации аккаунта. Если вы планируете связать свою дальнейшую жизнь с Qt, то я настоятельно рекомендую это сделать. Потому как это даст вам возможность общаться с другими Qt-разработчиками, в том числе и создателями самого Qt. Qt как любая достаточно сложная программная система не лишена недостатков и особенностей. Поэтому всегда хорошо иметь возможность пообщаться с опытными специалистами, чтобы сэкономить время в попытках самостоятельно разобраться с возникшей у вас проблемой.
Вы также можете пропустить (Skip) этот шаг сейчас, а затем при необходимости можете сделать это самостоятельно, зайдя на страницу Qt-форума. При попытке войти на него вас попросят ввести данные аккаунта или зарегистрироваться (кнопка Sign in). К тому же вы можете воспользоваться этой ссылкой для регистрации нового аккаунта.
Разрешение на сбор анонимной статистики
Теперь Qt Installer запрашивает ваше разрешение на сбор анонимной статистики для улучшения работы Qt в следующих версиях. Я выбираю опцию Help us make Qt Creator even better, потому как заинтересован в улучшении данного инструмента разработки и жму кнопку Далее.
На данном этапе вы должны указать путь установки Qt. На вашем диске должно быть как минимум 10 GB свободного места, потому как в дальнейшем потребуется устанавливать дополнительные компоненты, необходимые для работы с Android. И ещё один момент. Если вы используете SSD диски совместно со стандартными магнитными накопителями, то будет гораздо лучше, если вы выберете именно SSD носитель для хранения файлов Qt и Android, особенно если вы планируете в дальнейшем заняться разработкой больших проектов, которые как правило собираются достаточно долго. Использование SSD диска позволит вам ускорить процесс компиляции вашего проекта и существенно сократить по времени основной цикл вашего рабочего процесса. В дальнейшем я расскажу вам какие ещё методы можно использовать, чтобы сделать это.
Выбор компонентов для установки. Архитектуры Android
Следующим этапом нам предстоит выбрать набор компонент Qt для установки. Так как мы хотим разрабатывать Android-приложения на Qt нам необходимо выбрать все пункты содержащие в заголовке слово Android. На текущий момент доступны 3 версии архитектур Android:
Более подробно о каждой из архитектур можно прочесть на официальном сайте для Android-разработчиков пользуясь этой ссылкой. Следует отметить, что при необходимости компоненты можно будет добавить в любой момент через утилиту Qt Installer, которую будет можно найти на Панели управления Windows в пункте Программы и компоненты, так что особо не заморачивайтесь сейчас по этому поводу и жмите Далее.
Подтверждение лицензионного соглашения
Итак осталось подтвердить ваше согласие с лицензией Qt (отметьте галочку I have read) и начать процесс установки (жмём кнопки Далее, Далее, Установить). Процесс установки может занять около 10 — 15 минут, так что это повод отвлечься от компьютера и заняться чем-нибудь более полезным. Например, помечтать о светлом будущем или обнять любимого человека.
Что такое библиотека Qt?[править]
Библиотека Qt задумывалась и начиналась как кросс-платформенный тулкит (toolkit) для быстрой разработки графических интерфейсов (GUI) приложений на языке C++, с целью упростить жизнь программистов, пишущих на C++ кросс-платформенные, переносимые GUI-приложения, которые должны работать и в среде Windows, Symbian, и в среде Unix/Linux под X11, и на компьютерах Macintosh.
В настоящее время Qt значительно переросла рамки тулкита для разработки графических интерфейсов приложений. Она предоставляет использующему её программисту целостный фреймворк (framework), позволяющий при написании большей части приложения использовать только «родные» классы Qt и практически полностью отказаться от написания системно-зависимого кода, использования системных вызовов (будь то Win32 API или Unix system calls) или от изобретения собственных кросс-платформенных обёрток и «велосипедов». Классы Qt покрывают почти все потребности программиста. В Qt предусмотрены классы и для работы со строками, и для работы с файлами, сетью, базами данных, XML, и для обеспечения многопоточности в приложении, и многое-многое другое. По своим возможностям и богатству библиотека Qt сравнима с .NET Framework или с системой классов Java 2 EE.
Почему стоит использовать Qt?править
Qt предоставляет программисту не только удобный набор библиотек классов, но и определённую модель разработки приложений, определённый каркас их структуры. Следование принципам и правилам «хорошего стиля программирования на C++/Qt» существенно снижает частоту таких трудно отлавливаемых ошибок в приложениях, как утечки памяти (memory leaks), необработанные исключения, незакрытые файлы или неосвобождённые дескрипторы ресурсных объектов, чем нередко страдают программы, написанные «на голом C++» без использования библиотеки Qt.
Важным преимуществом Qt является хорошо продуманный, логичный и стройный набор классов, предоставляющий программисту очень высокий уровень абстракции. Благодаря этому программистам, использующим Qt, приходится писать значительно меньше кода, чем это имеет место при использовании, например, библиотеки классов MFC. Сам же код выглядит стройнее и проще, логичнее и понятнее, чем аналогичный по функциональности код MFC или код, написанный с использованием «родного» для X11 тулкита Xt. Его легче поддерживать и развивать.
Кроме того, даже если программисту в данный конкретный момент не нужна кроссплатформенность для его конкретного приложения (например, планируется версия только для Windows или только для Macintosh), никто не может знать, что понадобится завтра. Бизнес-планы могут поменяться, и может оказаться и нужным, и выгодным выпустить версию для другой операционной системы или другой аппаратной платформы. В случае использования Qt для этого понадобится всего лишь перекомпиляция исходного кода. В случае же использования, например, MFC или «родных» системных API понадобится много тяжёлой работы по портированию, адаптации и отладке, а то и переписыванию с нуля существующего исходного кода для другой ОС или аппаратной платформы.
Многие компании-разработчики приложений Windows используют Qt ещё по одной причине: даже если код пишется и в обозримом будущем будет писаться только для платформы Windows и тестируется только на ней, возможность откомпилировать один и тот же исходный код на одной и той же платформе Windows двумя разными компиляторами (Microsoft Visual C++ и GCC/Win32) гарантирует лучшее качество исходного кода и лучшую его совместимость со стандартом C++
Что немаловажно для кода, который планируется длительно поддерживать и развивать.
Установка Visual Studio
используйте следующие ссылки для установки Visual Studio 2019 или Visual Studio 2022 (предварительная версия). можно выбрать бесплатную Visual Studio Community выпуска, Visual Studio Professional или Visual Studio Enterprise. независимо от выбранной версии, по умолчанию также будет установлена последняя Windows SDK.
Требуемые рабочие нагрузки и компоненты
Убедитесь, что эти рабочие нагрузки и компоненты установлены с Visual Studio. Все они выбраны по умолчанию.
-
На вкладке рабочие нагрузки диалогового окна установки требуются следующие рабочие нагрузки.
- «Разработка приложений для универсальной платформы Windows».
- Разработка классических приложений на C++
- Разработка классических приложений .NET» ;
-
на вкладке отдельные компоненты диалогового окна установки Windows 10 пакет sdk (10.0.19041.0) требуется в разделе пакеты sdk, библиотеки и платформы .
-
в области сведения об установке диалогового окна установка убедитесь, что в разделе разработка универсальная платформа Windows выбраны следующие элементы:
- для Visual Studio 2019: средства универсальная платформа Windows C++ (v142)
- для Visual Studio 2022 (предварительная версия): C++ (v143) универсальная платформа Windows tools
Последовательность шагов
- Устанавка Windows 7
- В моем случае, на виртуальном компьютере VirtualBox, была установлена Windows 7 Ultimate (x64). Кроме того, так как я не представляю себе работу с Windows без Firefox и Far Manager, то, сразу после установки Windows, мною были установлены эти два бесплатных продукта. Скорее всего, эти, приятные для меня программы, никак не должны повлиять на успех дальнейших мероприятий, однако, точности ради, я упоминаю об этих дополнительных инсталляциях, проведенных в моем случае. Конкретно, были установлены Firefox v. 31 и Far Manager v. 3.0 betta 4040 (x64).
- Установка CMake
- В моем случае, была установлена версия 3.0. Во время инсталляции была выбрана опция добавления CMake в пути Windows. В противном случае, это придется сделать самостоятельно. Вообще, путь на CMake можно не прописывать. В этом случае, при ручной работе, понадобится указывать полный путь до файла cmake.exe, а в случае работы из под какой-нибудь среды разработки, поддерживающей систему сборки CMake, понадобится из среды выполнить настройку запуска CMake.
- Установка MinGW
- Установим бесплатные средства компиляции, распространяемые под лицензице GNU. Как минимум, нам необходимо установить средства для компиляции с языка C++. Если необходимо использовать MinGW непосредственно из командной строки, не пользуясь возможностями сред разработки, типа QtCreator, то понадобиться указать путь на директорию bin установки MinWG. В моем случае, я указал путь C:\MinGW\bin. Использование в командной строке полного пути к утилитам MinGW не всегда приведет к успеху, так как из одной утилиты может понадобиться вызов другой. Так, например, утилита сборки mingw32-make вызывает при исполнении сценария сборки компилятор g++ при компиляции файлов с языка C++.
- Установка Qt SDK
- На странице http://qt-project.org/downloads по-умолчанию, предлагается скачивание последних версий Qt и среды разработки. Однако, внизу страницы, надо поискать средства для открытия информации по скачиванию более ранних версий Qt. На момент написания этих строк, я нашел внизу страницы кнопку «Show downloands» щелчок по которой открыл мне доступ к скачиванию «Qt libraries 4.8.6 for Windows (MinGW 4.8.2, 328MB)».
Использование данного инсталлятора отличается простотой, в том плане, что не требуется пользовательская установка со сложным выбором средств, которые требуются для конечной работы. К сожалению, устанавливая Qt для Windows я сталкивался с инсталляторами, которые содержат ошибки в зависимостях установки опций, и которые решаются установкой совершенно нелогичных флажков). В данной версии инсталлятора следует заметить только одну особенность. Он не содержит в себе MinGW в явном виде, и, вместо этого, на последней странице, перед запуском установки, сообщает о том, что для его работы нужен установленный MinGW и просит указать директорию его установки. Также, он предлагает ссылку, по которой можно попробовать установить MinGW, но, с учетом того, что инсталлятор Qt4 уже довольно старинный артефакт, а ссылки на ресурсы Интернет, могут меняться, то лучше подготовить установку MinGW предварительно, как мы и сделали на предыдущем шаге.
Если мы будем использовать сборку из командной строки, не используя средств разработки, то следует добавить путь на QtSDK в системную переменную PATH. Так же, это может потребоваться для работы CMake при наличии нескольких установленных версий Qt SDK. При наличии нескольких установленных версий Qt SDK в системных путях должен быть путь только на одну из версий — таким образом можно будет выполнять переключение используемых версий вне возможностей сред разработки, которые под каждую настроенную сборку автоматически формируют набор переменных окружения с требуемыми значениями.
Каждая из установок Qt SDK характеризуется &quuot;своим» экземпляром утилиты qmake.exe. Именно она знает где лежит все то, что необходимо для сборки проекта под данную версию Qt. Поэтому, путь на Qt SDK характеризуется путем на размещение ее экземпляра qmake.exe. В моем случае, это был путь C:\Qt\4.8.6\bin.
Hello world[править]
- Создайте папку helloworld;
- Создайте в папке helloworld файл helloworld.cpp следующего содержания:
#include <QApplication> #include <QLabel> int main(int argc, char *argv[]) { QApplication app(argc, argv); QLabel *label = new QLabel("Hello Qt!"); label->show(); return app.exec(); }
- Запустите «MS Visual C++ 2005 Express Edition»;
- Выберите пункт меню Tools->Visual Studio 2005 Command Prompt;
- Из консоли перейдите в вами созданную папку helloworld;
- В консоли наберите:
qmake -project qmake -tp vc helloworld.pro
- Откройте созданный файл helloworld.vcproj;
- В среде Visual Studio выберите пункт меню Debug → Start Debugging.
А как же MAUI?
Всё что я писал до этого, касалось только Windows и никаких других ОС. Но у Microsoft есть Xamarin — .NET для мобилок (на самом деле mono для мобилок). Наработки xamarin вмерживаются в .NET 5 и 6. Собственно MAUI — .NET Multi-platform App UI — ничто иное как Xamarin.Forms, реализованные в .NET.
MAUI — абстракция над нативными UI-фреймворками.
Собственно, на винде это будет абстракцией над WinUI. У Xamarin.Forms есть поддерживаемая сообществом реализация поверх WPF.
Аналогичным образом ReactNative for Windows так же является абстракцией поверх WinUI. На нем, кстати, написан магазин на Xbox.
Application Models
Два вышеописанных системных API в данный момент подразумевают две разных модели жизненного цикла приложений. Классическая модель — приложению можно почти всё, оно может залезть почти куда угодно, читать что угодно, прятать окна и свою деятельность. С одной стороны — это позволяет делать различные удобные штуки вроде Punto Switcher, или сворачивание в трей по закрытию окна (вопреки ожиданиям, это не стандартное поведение в Windows). С другой стороны, это развязывает руки любым троянам.
И это было одной из причин, почему для приложений, работающих с WinRT, за основу была взята модель из мобильных платформ — изолированные приложения с контролируемым системой жизненным циклом. Другой из озвученных причин является большая энергоэффективность мобильного подхода. Всё же значительное количество ПК — ноутбуки. Вылилось это в повсеместные ограничения, привязку времени жизни приложения и времени жизни его основного окна (пока-пока сворачивание в трей). А также сильные ограничения работы в фоновом режиме. На размен давались различные фоновые задачи, контролируемые системой, и легальные способы интеграции в систему (системные контракты, такие как Share UI). В Microsoft посчитали, что за неполные 9 лет за счет таких интеграций появилось около 40 возможных точек входа в приложение. В какой-то момент даже появилась возможность делать консольные приложения, работающие поверх WinRT.
Стоит так же отметить, что эти две модели не изолируют Win32 и WinRT API друг от друга. В UWP приложения всё так же можно подключать Win32-библотеки, пока это не открывает путь за пределы песочницы. Из Win32 можно дергать WinRT API, но для большей его части надо получить AppIdentity, до недавнего времени это означало, что приложение придётся запаковать и оно станет чуть более изолированным.
И, пожалуй, именно тут надо вспомнить про UWP (Universal Windows Platform). Технически это название для реализации Windows Runtime в Windows 10+. Дело в том, что Windows Runtime в телефонах и Windows Runtime в Windows 8 отличались настолько, что для них нужно было делать отдельные сборки приложений (даже для одной архитектуры процессора). С появлением Windows 10, ОС и рантайм допилили до того состояния, когда 1 сборка приложения может запускаться и на телефоне (тогда они ещё были), и на ПК. Так же к этому списку добавились XBox, IoT, Hololens и Teams (большая интерактивная «маркерная доска»)
На практике, под сокращением UWP часто понимают именно UWP-приложения.
Преимущества пакета SDK для приложений Windows, которые получат разработчики Windows
Пакет SDK для приложений Windows предоставляет широкий спектр API-интерфейсов Windows с реализациями, не зависящими от ОС, которые предоставляются разработчикам в виде пакетов NuGet. Пакет SDK для приложений Windows не предназначен для замены Windows SDK. Windows SDK будет работать так же, как и раньше, а многие основные компоненты Windows будут совершенствоваться с помощью API, которые предоставляются в выпусках ОС и Windows SDK. Мы рекомендуем разработчикам переходить на пакет SDK для приложений Windows в удобном для себя темпе.
Унифицированное использование API для разных платформ классических приложений
Разработчики, которые хотят создавать классические приложения для Windows, вынуждены выбирать между несколькими платформами и средами приложений. Хотя каждая из таких платформ предоставляет множество функций и API, которые могут использоваться приложениями, созданными с помощью других платформ, некоторые из них могут использовать только определенные платформы. Пакет SDK для приложений Windows унифицирует доступ к API-интерфейсам Windows из классических приложений Windows 11 и Windows 10. Независимо от выбранной вами модели приложений вы получите доступ ко всему набору API-интерфейсов Windows, представленных в пакете SDK для приложений Windows.
Мы планируем и дальше развивать пакет SDK для приложений Windows, устраняя пока сохранившиеся различия между разными моделями приложений. Пакет SDK для приложений Windows будет включать как API WinRT, так и собственные API-интерфейсы C.
Согласованные возможности в разных версиях Windows
Так как API Windows меняются с каждой новой версией ОС, разработчикам нужно использовать такие техники, как адаптивный к версии код, чтобы учесть все различия в версиях, которые может использовать аудитория приложения. Это приводит к усложнению кода и работы разработчиков.
Интерфейсы API пакета SDK для приложений Windows будут работать с ОС Windows 11 и более ранних версий, вплоть до Windows 10 версии 1809. Таким образом, если все ваши клиенты работают с Windows 10 версии 1809 или любой более поздней версии Windows, вы сможете применять новые API-интерфейсы и функции пакета SDK для приложений Windows сразу после их выпуска. При этом вам не придется писать дополнительный код для адаптации к разным версиям.
Увеличенная частота выпусков
Новые API и функции Windows ранее обычно были привязаны к выпускам ОС, которые выходили один или два раза в год. Пакет SDK для приложений Windows будет чаще предоставлять обновления, чтобы вы могли быстрее получать доступ к инновационным возможностям на платформе разработки Windows по мере их появления.
использование правильного Windows SDK для проекта
начиная с Visual Studio 2015, библиотека среды выполнения C (CRT) была разделена на две части: одна часть, ucrtbase, содержит стандартные функции crt C и Microsoft, которые можно использовать в универсальных Windows приложениях. эта библиотека теперь называется универсальной библиотекой CRT или UCRT и перешла в пакет SDK Windows 10. UCRT содержит множество новых функций, таких как функции C99, которые необходимы для поддержки новейших стандартов языка C++. Другая часть исходной CRT — vcruntime. Он содержит поддержку, запуск и код завершения среды выполнения C, а также все остальное, которые не были отправлены в UCRT. Библиотека vcruntime устанавливается вместе с компилятором и набором средств C++ в Visual Studio. Дополнительные сведения см. в разделе функции библиотеки CRT.
UCRT теперь является системным компонентом, установленным на каждой версии Windows 10. Он также доступен как устанавливаемый компонент для всех более ранних поддерживаемых версий Windows. вы можете использовать Windows 10 SDK для всех поддерживаемых версий Windows. полный список поддерживаемых операционных систем см. в разделе Windows 10 SDK.
чтобы перенацелить проекты на использование пакета SDK для Windows 10 при обновлении версии проекта до Visual Studio 2015, выполните следующие действия.
Изменение целевой платформы для пакета SDK для Windows 10
Убедитесь, что установлен пакет SDK для Windows 10. пакет SDK для Windows 10 устанавливается в рамках рабочей нагрузки разработка классических приложений на C++ . Автономная версия доступна в файлах Downloads и Tools for Windows 10.
Откройте контекстное меню для узла проекта и выберите пункт перенацелить проекты. (в более ранних версиях Visual Studio выберите изменить целевую версию пакета SDK.) Откроется диалоговое окно Проверка действий решения .
в раскрывающемся списке версия целевой платформы выберите версию пакета SDK Windows 10, который вы хотите назначить. В целом, мы рекомендуем выбрать последнюю установленную версию. Нажмите кнопку ОК , чтобы применить изменение.
8,1 в этом контексте относится к пакету SDK для Windows 8.1.
Если этот шаг выполнен успешно, в окне вывода появится следующее сообщение.
Откройте диалоговое окно Свойства проекта
в разделе свойства конфигурации > общие обратите внимание на значения Windows версия целевой платформы. Изменение значения на данном этапе действует аналогично данной процедуре
Дополнительные сведения см. в разделе Страница свойств «Общие» (проект).
Это действие приводит к изменению значений макросов проекта, содержащих пути к файлам заголовка и файлам библиотеки. чтобы увидеть изменения, откройте раздел Visual C++ каталоги диалогового окна свойства Project . Выберите одно из свойств, например каталоги включения. Затем откройте раскрывающийся список значение свойства и выберите . Откроется диалоговое окно Каталоги включения .
нажмите кнопку макросы >> и прокрутите список макросов до Windows SDK макросов, чтобы просмотреть все новые значения.
При необходимости повторите процедуру перенаправления для других проектов решений и перестройте решение.
Изменение целевой платформы для пакета SDK для Windows 8.1
-
Откройте контекстное меню узла проекта в обозреватель решений и выберите пункт перенацелить проекты. (в более ранних версиях Visual Studio выберите изменить целевую версию пакета SDK.)
-
В раскрывающемся списке Версия целевой платформы выберите 8,1.
Windows API и Windows Runtime
Прежде чем начать разбираться с UI-фреймворками стоит сначала опуститься на уровень ниже, впрочем, без особых подробностей. В современной винде 2 основных API для работы приложений. Windows API (обычно сокращается до Win32) и Windows Runtime (WinRT). При разработке первый был ориентирован на язык С, и активно развивался вплоть до выхода Windows 8. Я не имею в виду, что этот API объявлен устаревшим, но все новые функции системы уже разрабатывются для WinRT. Хотя некоторые так же бекпортируются и в Win32. Приложения, которые работают через Win32 и используют его модель приложений и сервисов Microsoft называет классическими.
WinRT — вещь немного более сложная. Это даже не API, а способ взаимодействия с ним. Из вики:
Ключевое: есть объектно-ориентированные метаданные, которые описывают публичный интерфейс библиотеки: поддерживаются базовые классы (числа, строки), асинхронность (async/await), события. Начиная с Windows 8 весь новый API — это COM, с которым можно взаимодействовать через данный протокол. Любой язык, который реализует языковую проекцию в WinRT (C++/WinRT, Rust/WinRT, Python/WinRT, С#/WinRT) может взаимодействовать с этим API, будто это нативная для языка библиотека. Компоненты WinRT могут быть написаны на любом их этих языков. Сам виндовый API написан при этом на C++.
Помимо объектно-ориентированности, новый API имеет версионирование, больший контроль доступа к вызовам. Некоторые системные вызовы могут делать только приложения определённых разработчиков, некоторые доступны по специальному ключу. Некоторые сокрыты весьма условно: если приложение попало на комп, оно может ими пользоваться. Но вот в Microsoft Store могут и не пустить.
Установка Qt Creator в Linux
На этих уроках используется операционная система Linux (Debian 9.x 64-bit), поэтому мы скачиваем , но вы также можете использовать соответствующие файлы Qt для Windows или macOS:
После окончания загрузки переходим в папку с необходимым нам файлом, нажимаем на него правой кнопкой мыши и выбираем . На вкладке видим , , , а также наименование родительской папки:
Переходим на вкладку и ставим галочку возле пункта :
Закрываем и запускаем программу.
Шаг №2: На следующем этапе установщик сообщает, что нам предоставлена версия с открытым исходным кодом Qt 5.13.0. Дальнейшая установка Qt предполагает регистрацию в Qt и создание Qt Account, который предоставляет доступ ко всем возможностям Qt. Кроме того, данное действие необходимо для проверки лицензии (коммерческая/некоммерческая). Если у вас уже есть учетная запись в Qt Account, то используйте кнопку .
Если учетной записи в Qt Account у вас еще нет, то её можно создать сейчас: для этого перейдите по соответствующей ссылке в установщике, и вы будете перенаправлены на сайт qt.io в соответствующий раздел, или просто используйте кнопку — вы сможете это сделать на следующем шаге:
Шаг №3: Здесь необходимо ввести логин и пароль от Qt Account или создать Qt Account, если его у вас еще нет. Кнопка переводит нас на следующий этап:
Добро пожаловать в настройки Qt 5.13.0! Для перехода к следующему шагу нажимаем :
Шаг №4: Выбираем каталог для установки Qt 5.13.0
Обратите внимание, адрес каталога указывается латинскими буквами (без кириллицы) и без пробелов! После того, как выбрали каталог, нажимаем :
Шаг №5: Выбираем компоненты, которые хотим установить. Если на данном этапе у вас нет уверенности в выборе конкретных компонентов, то добавление и удаление можно будет сделать позже, после установки программы:
Шаг №6: Принимаем лицензионное соглашение:
И нажимаем на кнопку :
Для завершения установки нажимаем . После завершения установки Qt Creator запустится самостоятельно (для этого необходимо поставить галочку возле пункта ):
Вот примерно следующее вы должны увидеть при запуске Qt Creator:
Поздравляем! Qt Creator установлен.
UI-фреймворки
Наконец можно поговорить про UI-фреймворки. С Windows Forms и WPF многие знакомы. UI, работающий поверх Win32 API. Отличаются способом верстки UI (дизайнер или XAML) и способом отрисовки (GDI или DirectX). С появлением WinRT, эти фреймворки особо не развиваются, но из-за огромного количества легаси приложений, Microsoft вынуждена поддерживать их. Например, в последних выпусках десятки значительно улучшена поддержка HDPI для WinForms.
Как такового маркетингового названия для UI-фреймворка в UWP нет. В зависимости от контекста используют понятия UWP-приложения и UWP XAML. Итак, UWP-приложения используют WinRT-модель приложений, XAML в качестве языка разметки и не требуют .NET. Фактически даже приложения, написанные на C#, собираются в нативный код, а не IL. XAML так же отличается от того, что используется в WPF, так как является развитием телефонного Silverlight (подмножества WPF). В итоге, с точки зрения верстки у XAML в UWP есть как отсутствующие фишки (например, multibindings), так и новые полезные фичи (например, компилируемые x:Bind), по сравнению с WPF. Кроме того, в UWP появился Composition API для визуально богатых, но экономичных с точки зрения ресурсов анимаций. И сделано много наработок для того, чтобы поддержать все богатство способов взаимодействия в современной Windows. Например, пункты контекстного меню становятся больше, если вызывать меню через тач.
WinUI
WinUI достоин отдельного упоминания, так как он един в двух лицах.
WinUI 2.x — UI-библиотека для UWP-приложений, содержащая в себе новые, в том числе экспериментальные, контролы. А также, обеспечивающая совместимость со старыми версиями Windows 10 (аналог AndroidX)
WinUI 3.x — часть Windows App SDK. Фактически это и есть UI-фреймворк для UWP, только оторванный от жизненного цикла UWP-приложений.
Обе версии сейчас развиваются параллельно.