Главная » 2026 » Ноябрь » 14 » C++ | Создание проекта в редакторе Qt Creator
16:07
C++ | Создание проекта в редакторе Qt Creator

C++ | Создание проекта в редакторе Qt Creator

В разд. 1.6.1 мы создали проект Test64 (для создания 64-битных программ) в редакторе Qt Creator. При этом мы пользовались мастером, который автоматический создал файл и вставил в него код. Давайте попробуем создать еще один проект и самостоятельно добавить в него файлы.

Для создания проекта консольного приложения в меню Файл выбираем пункт Создать файл или проект. В открывшемся окне (см. рис. 1.21) в списке выбираем пункт Проект без Qt, а затем пункт Приложение на языке C++. Нажимаем кнопку Выбрать. На следующем шаге (рис. 2.1) в поле Название вводим HelloWorld, в поле Создать в добавляем путь C:\cpp\projectsQt. Нажимаем кнопку Далее. На следующем шаге (см. рис. 1.23) из списка Система сборки выбираем пункт qmake и нажимаем кнопку Далее. На следующем шаге (рис. 2.2) устанавливаем флажок Desktop Qt 6.1.0 MinGW 64-bit. Нажимаем кнопку Подробнее и изменяем пути по умолчанию. В поле Отладка вводим значение C:\cpp\projectsQt\HelloWorld-Debug, а в поле Выпуск — значение C:\cpp\projectsQt\HelloWorld-Release. Нажимаем кнопку Далее. На следующем шаге (рис. 2.3) нажимаем кнопку Завершить. Проект отобразится на вкладке Проекты.

Рис. 2.1. Создание консольного приложения. Указание названия проекта

Рис. 2.2. Создание консольного приложения. Выбор компилятора

Рис. 2.3. Создание консольного приложения. Последний шаг

По умолчанию для кодирования символов в L-строках MinGW использует кодировку UTF-8, а файлы нашего проекта сохраняются в кодировке windows-1251. Если мы попробуем указать русские буквы при инициализации L-строки (L"Строка"), то получим ошибку. Чтобы избежать ошибок нужно с помощью флага -finput-charset указать компилятору кодировку исходного файла, а с помощью флага -fexec-charset — кодировку C-строк. Для этого в файл HelloWorld.pro добавляем следующие инструкции:

QMAKE_CXXFLAGS += -finput-charset=cp1251
QMAKE_CXXFLAGS += -fexec-charset=cp1251
QMAKE_CXXFLAGS += -Wconversion

Содержимое файла HelloWorld.pro должно выглядеть так:

TEMPLATE = app
CONFIG += console c++11
CONFIG -= app_bundle
CONFIG -= qt
QMAKE_CXXFLAGS += -finput-charset=cp1251
QMAKE_CXXFLAGS += -fexec-charset=cp1251
QMAKE_CXXFLAGS += -Wconversion

SOURCES += \
        main.cpp

Добавление в проект файла с программой

Теперь добавим файл для ввода текста программы. Для этого в окне Проекты щелкаем правой кнопкой мыши на названии проекта и из контекстного меню выбираем пункт Добавить новый. В открывшемся окне (рис. 2.4) из списка слева выбираем пункт C/C++, а из списка справа — пункт Файл исходных текстов C/C++. Нажимаем кнопку Выбрать. На следующем шаге (рис. 2.5) вводим название HelloWorld.cpp (обратите внимание: файлы с исходным кодом на языке C++ имеют расширение cpp) в поле Имя файла. В поле Путь указываем значение C:\cpp\projectsQt\HelloWorld. Нажимаем кнопку Далее. На следующем шаге (рис. 2.6) нажимаем кнопку Завершить. Созданный файл отобразится на вкладке Проекты и будет открыт на отдельной вкладке для редактирования. В файл HelloWorld.pro будут добавлены следующие строки:

SOURCES += \
        HelloWorld.cpp \
        main.cpp

Теперь проверим кодировку файла. Увидеть кодировку файла можно выбрав в меню Правка пункт Выбрать кодировку. Кодировка должна быть указана windows-1251 / CP1251.

Рис. 2.4. Добавление файла с программой. Шаг 1

Рис. 2.5. Добавление файла с программой. Шаг 2

Рис. 2.6. Добавление файла с программой. Шаг 3

Добавление в проект заголовочного файла

Помимо файлов с исходным кодом (в языке C++ они имеют расширение cpp, а в языке C — расширение c) в проекте могут быть заголовочные файлы (в языке C++ они имеют расширение hpp или h). В заголовочных файлах указываются прототипы функций и различные объявления.

Для создания заголовочного файла в окне Проекты щелкаем правой кнопкой мыши на названии проекта и из контекстного меню выбираем пункт Добавить новый. В открывшемся окне (рис. 2.7) из списка слева выбираем пункт C/C++, а из списка справа — пункт Заголовочный файл C/C++. Нажимаем кнопку Выбрать. На следующем шаге (рис. 2.8) вводим название HelloWorld.hpp в поле Имя файла. В поле Путь указываем значение C:\cpp\projectsQt\HelloWorld. Нажимаем кнопку Далее. На следующем шаге (рис. 2.9) нажимаем кнопку Завершить.

Рис. 2.7. Создание заголовочного файла. Шаг 1

Рис. 2.8. Создание заголовочного файла. Шаг 2

Рис. 2.9. Создание заголовочного файла. Шаг 3

Созданный файл отобразится на вкладке Проекты и будет открыт на отдельной вкладке для редактирования. Причем внутри файла будет вставлен код, приведенный в листинге 2.2. В файл HelloWorld.pro будут добавлены следующие строки:

HEADERS += \
   HelloWorld.hpp

Листинг 2.2. Содержимое файла HelloWorld.hpp

#ifndef HELLOWORLD_HPP
#define HELLOWORLD_HPP

#endif // HELLOWORLD_HPP

Текст после символов // является комментарием. Инструкции, начинающиеся с символа #, — это директивы препроцессора. В нашем примере их три:

  • #ifndef — проверяет отсутствие константы с именем HELLOWORLD_HPP;
  • #define — создает константу с именем HELLOWORLD_HPP;
  • #endif — обозначает конец блока проверки отсутствия константы.

Зачем нужны эти директивы препроцессора? Заголовочный файл мы подключаем к файлу с исходным кодом с помощью директивы #include:

#include "HelloWorld.hpp"

Встретив в исходном коде директиву #include компилятор вставляет все содержимое заголовочного файла на место директивы. Если мы вставим две одинаковые директивы #include, то содержимое заголовочного файла будет вставлено дважды. Так как объявить один идентификатор (например, глобальную переменную) дважды нельзя, компилятор выведет сообщение об ошибке. Чтобы этого избежать, прототипы функций и прочие объявления вкладываются в блок, ограниченный директивами #ifndef и #endif. В директиве #ifndef указывается константа, совпадающая с названием заголовочного файла. Все буквы в имени константы заглавные, а точка заменена символом подчеркивания. Если константа не существует (при первом включении заголовочного файла так и будет), то с помощью директивы #define эта константа создается и содержимое блока вставляется в исходный код. При повторном включении заголовочного файла константа уже существует, поэтому содержимое блока будет проигнорировано. Таким образом заголовочный файл дважды вставлен не будет, а значит и ошибки не будет.

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

#pragma once
// Объявление функций и др.

Название заголовочного файла в директиве #include может быть указано внутри угловых скобок:

#include <iostream>

или внутри кавычек:

#include "HelloWorld.hpp"

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

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

Внимательный читатель наверняка обратил внимание на то, что файл iostream не содержит расширение. Наличие расширения файла принято в стандартной библиотеке языка C. В стандартной библиотеке языка C++ расширение файла принято не указывать. Так как язык C++ наследует все библиотеки языка C, то файлы можно подключать как в стиле языка C, так и в стиле языка C++. Например, файл string.h из стандартной библиотеки языка C доступен в языке C++ под названием cstring, а файл math.h под названием cmath. Отличие между этими способами подключения заключается в импорте идентификаторов. В языке C при подключении файла (например, math.h) все идентификаторы импортируются в глобальное пространство имен, а в языке C++ при подключении файла (например, cmath) идентификаторы добавляются в пространство имен под названием std. Поэтому перед идентификатором необходимо указать название пространства имен (например, std::cout). Использование пространств имен позволяет избежать конфликта имен в программе.

Можно указать просто название заголовочного файла:

#include "HelloWorld.hpp"

абсолютный путь к нему:

#include "C:\\cpp\\projectsQt\\HelloWorld\\HelloWorld.hpp"

или относительный путь к нему:

#include "./HelloWorld.hpp"

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

g++ -Wall -O3 "-IC:\\Program Files\\Java\\jdk-10\\include" 
    "-IC:\\Program Files\\Java\\jdk-10\\include\\win32" 
    -o helloworld.exe helloworld.cpp

В нашем случае путь содержит пробел, поэтому весь путь указывается внутри кавычек. Если пробелов нет, то кавычки можно не указывать.

Скачать учебник C++ в формате PDF

Категория: Прочее | Просмотров: 3 | Добавил: unicross | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Категории раздела
Списки слов [0]
Списки слов и словари
OCR [0]
Оптическое распознавание символов
UImage [0]
Графическая библиотека для Python
UImage C [0]
Графическая библиотека для Python
Программы [2]
Полезные программы
Прочее [11]
Другие темы
Календарь
«  Ноябрь 2026  »
Пн Вт Ср Чт Пт Сб Вс
      1
2345678
9101112131415
16171819202122
23242526272829
30
Архив записей