В qt добавить файл в проект

Обновлено: 03.07.2024

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

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

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

С учетом всех плюсов и минусов последний вариант в большинстве случаев является предпочтительным. О нем мы и поговорим.

Реклама

Создание файла с описанием ресурсов

Первым делом создайте файл с описанием тех ресурсов, которые собираетесь использовать. Он имеет следующий вид (назовем его res.qrc ):

В приведенном примере мы определили один префикс: /images . Его можно считать логическим каталогом ресурсов. Таких префиксов может быть сколько угодно. Например, если в вашем приложении есть звуковые эффекты, то вы можете добавить префикс /sounds . Для создания более глубокой иерархии используйте префиксы вида /some/long/prefix .

В тег <qresource> вложены определения файлов, относящихся к соответствующему префиксу. В примере включено единственное изображение logo.jpg , но вы можете указать столько файлов, сколько необходимо. Используйте относительные пути к файлам, беря в качестве каталога отсчета - тот, в котором находится qrc -файл.

Имеет смысл явным образом распределять ресурсы по подкаталогам в файловой системе проекта. Например, изображение logo.jpg поместите в images/ . Тогда запись приобретает вид:

В этом случае логический путь к файлу logo.jpg вновь имеет вид: /images/logo.jpg .

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

Файл доступен по логическому пути /myprefix/logo.jpg .

Затем нужно привязать заполненный qrc -файл к проекту. Для этого добавьте в ваш pro -файл строку вида:

В примере выше qrc -файл расположен на одном уровне с pro -файлом. Если вы применяете более сложную схему размещения файлов, то воспользуйтесь относительным путем.

Обратите внимание, что в QtCreator предусмотрен довольно удобный GUI-интерфейс для работы с файлами ресурсов. Чтобы создать новый qrc -файл, щелкните в контекстном меню для нужного проекта на пункт Add New. . В появившемся диалоговом окне перейдите в группу Qt и выберите Qt Resource file . После успешного создания файла ресурсов в панели проекта вы увидите новую группу Resources , появившуюся рядом с Headers и Sources . Открыв qrc -файл вы попадете в редактор ресурсов, который вполне интуитивно позволяет выполнить те же самые действия, которые мы выполняли вручную.

Реклама

Использование ресурсов в приложении

Итак, qrc -файл готов и подключен к проекту. Осталось только воспользоваться преимуществами от его использования. И сделать это совсем не сложно:

Ключевым здесь является способ обращения к изображению (или любому другому файлу) из ресурсов. Путь строится следующим образом: сначала ставится двоеточие : , затем префикс /images , который мы сами выбрали, и наконец путь к файлу (или псевдоним) logo.jpg . В остальном все то же самое, что и при работе с обычными файлами, предназначенными только для чтения.

Заключение

Использовать файлы ресурсов в Qt-проектах очень просто, поэтому если вам понадобилось добавить изображения, музыку или что-то еще в свое приложение, то теперь вы знаете, что нужно делать.

Добавить файлы ресурсов в проект и добавить изображения к кнопкам в Qt

hot3.jpg

Стандарты набора персонала Unicorn Enterprise Heavy для Python-инженеров 2019 >>>

Небольшое изменение было внесено после того, как макет был завершен в прошлый раз, а именно: добавлена ​​метка для размещения логотипа в верхней части кнопки слева (хотя я еще не понял, какой логотип поставить --—)

Макет теперь выглядит так:


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

1. Щелкните правой кнопкой мыши папку проекта и выберите Добавить новый файл - выберите файл ресурсов Qt-Qt.



2. После ввода имени нажмите «Далее», «Готово», а затем дважды щелкните файл .qrc, созданный в проекте, нажмите «Добавить» и выберите «Добавить префикс».


2. После добавления префикса вы можете добавить файл. Выберите файл для добавления. Здесь вам нужно поместить файл, который нужно добавить, в папку в каталоге проекта. После добавления сохраните его, и вы сможете просмотреть его в обозревателе ресурсов. Когда он поступит, на него можно будет ссылаться в коде.


Я могу добавить значок и логотип завтра

Здесь есть небольшой эпизод. Я обнаружил, что все мои фильмы вначале были написаны как кино. Я думал, что было сложно менять один за другим, но позже я обнаружил, что могу переместить курсор на переменную, которую нужно изменить, и нажать Ctrl + Shift + R, чтобы Совместно изменили имя переменной в проекте


Вернуться к теме - добавление значков к кнопкам делится на следующие шаги:

1. Объявите объект QIcon для хранения значков.

2. Объект кнопки вызывает функцию setIcon () для загрузки изображения на кнопку.

Запустите его и обнаружите, что размер кнопки и размер значка очень неудобны:


Я думаю, что лучше сделать иконку больше, и тогда кнопка будет такой же большой, как иконка.

Но обнаружено, что независимо от того, вызывается ли функция resize () QPushButton до или после размещения кнопки в макете, она не имеет никакого эффекта.

Я думаю, поскольку он размещен в макете, даже если его размер будет изменен, он будет автоматически изменен в соответствии с размером окна, поэтому просто установите максимальное и минимальное значения кнопки одинаковыми:

На этом уроке мы рассмотрим работу с файлами и каталогами в Qt5. Для этого мы будем использовать следующие классы:

QFile , QDir и QFileInfo — основные классы для работы с файлами в Qt5;

QFile — предоставляет интерфейс для чтения и записи информации в файлы;

QDir — обеспечивает доступ к структуре каталогов и к их содержимому;

QFileInfo — предоставляет информацию о файле, включая его имя и расположение в файловой системе, время доступа и изменения, имя владельца файла и текущие разрешения.

Размер файла

Для определения размера файла в классе QFileInfo предусмотрен метод size():

// Имя файла передается в качестве аргумента в нашу программу qWarning ( "The file does not exist" ) ; // если файл не найден, то выводим предупреждение и завершаем работу программы qint64 size = fileinfo . size ( ) ; // qint64 - это тип данных, который гарантированно будет 64-битным на всех платформах, поддерживаемых Qt

Для запуска программы проделайте следующие шаги:

ПОДГОТОВКА:

Шаг №1: Скомпилируйте вашу программу. Для этого выберите в меню "Сборка" > "Собрать всё" (или нажмите Ctrl+Shift+B ).

Шаг №2: Зайдите в папку, где лежит ваш Qt-проект (у меня он расположен в C:\dev\Qt_Project ).

Шаг №3: После выполнения первого шага у вас должна появиться еще одна папка, в которой будет создан исполняемый файл программы. Т.к. я использую компилятор MinGW 32-bit и режим компиляции Debug, то при компиляции проекта Qt автоматически создал папку build-My_QtApplication-Desktop_Qt_5_13_0_MinGW_32_bit-Debug .

Шаг №4: Зайдите в папку debug (она находится внутри папки, созданной на шаге №3).

Шаг №5: Найдите *.exe-файл вашей программы (у меня это file_size.exe ).

Шаг №6: Скопируйте этот файл в папку к соответствующему компилятору (напомню, т.к. я использовал компилятор MinGW 32-bit, то у меня этот путь выглядит следующим образом: C:\Soft\Qt\5.13.0\mingw73_32\bin ).

ЗАПУСК ПРОГРАММЫ:

Шаг №7: Откройте командную строку.

Шаг №8: Перейдите в папку, указанную в шаге №6 ( cd C:\Soft\Qt\5.13.0\mingw73_32\bin ).

Шаг №9: Запустите свою программу, передав ей в качестве параметра имя любого файла (у меня этим файлом оказалась эта же программа, поэтому в моем случае команда была следующей: file_size.exe file_size.exe ).

Результат выполнения программы:



Чтение содержимого файлов

Для того, чтобы прочитать содержимое файла, мы должны сначала открыть этот файл в режиме чтения, затем создать входящий файловый поток, из которого мы будем считывать данные. В примере, приведенном ниже, мы считываем данные из файла C:\colours.txt . Файл содержит названия семи цветов, вот его содержимое:

Red
Green
Black
Yellow
Purple
Blue
White

Я хотел бы разделить свой проект Qt на несколько каталогов, потому что он становится довольно большим. Однако, когда я нажимаю «Обзор» в QtCreator, нет «Добавить каталог» и ничего подобного в «Добавить новый». Можно как-то это сделать?

Что не так с созданием подкаталога с вашим файловым менеджером? Я могу создавать каталоги вручную, но тогда я их не вижу в браузере проекта. @Ariya Вы должны хотя бы проголосовать за это, поскольку это функция доступна в большинстве IDE, и люди будут спрашивать об этом. При всем уважении, но Qt-Creator отстой в удобстве использования (в отношении пользовательского интерфейса). Как разработчик, если вы видите, что кто-то должен спросить, как добавить подкаталог в проект на общедоступном форуме, то вы знаете, что с этим есть серьезная проблема. IDE. @GabrielF довольно легко . это фиксированная. Почему мы не можем просто выбрать «создать каталог» (или «добавить каталог» в духе Creator), как в большинстве IDE. Это базовая функциональность, которая есть даже у большинства дрянных редакторов - вы можете создать каталог в блокноте! Не должно быть «метода» для выполнения такой простой, базовой задачи - он должен быть очевиден.

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

Qt Creator отображает их в графическом интерфейсе во вложенном виде и позволяет вам добавлять к ним файлы.

в папке1 / include.pri

Могу ли я сделать это вложение из среды IDE или мне придется вручную устанавливать эти файлы и каталоги? Я быстро просмотрел и думаю, что вам нужно добавить включаемые файлы вручную, но при добавлении новых файлов в проект Qt Creator позволит вам добавить их во включаемый файл, а не в основной файл проекта. Хорошо, надеюсь, они добавят эту функцию в новую версию.

До QT Creator 3.1.x вы можете щелкнуть правой кнопкой мыши свой проект -> « добавить новый . » и изменить путь к нужной папке.

Qt добавить новый .

Папка должна существовать , Qt не создаст ее за вас.

Добавьте новый класс и измените папку по умолчанию Qt

Qt позаботится о пути в вашем файле .pro.

Qt позаботится о пути в вашем файле .pro

Qt позаботится о пути в вашем файле .pro

Следует отметить, что это не сработает при использовании проектов CMake в QtCreator. @ Этьен, ты прав. Это не работает. Что делать в этом случае?

У меня была такая же проблема, и я нашел относительно простой ответ.

Все , что вам нужно сделать , чтобы перейти file.cpp на newFolder это переименовать файл (правой кнопкой -> Переименовать) в newFolder\file.cpp .

Qt Creator переместит его в новую папку и автоматически обновит .pro файл.

не забывайте, что папка уже должна существовать до замены Если перемещенный файл находится под контролем GIT, позаботится ли создатель Qt о необходимых изменениях в GIT? @Silicomancer Git обрабатывает перемещенные файлы за вас, а не Qt Creator. Вам ничего не нужно делать, кроме как переместить файл с помощью описанного обходного пути (с использованием «переименования») в Qt Creator. Если бы вы перемещали файл только в файловой системе, Git распознал бы это, но путь к файлу не был бы скорректирован в .PRO файле Qt Creator . @Silicomancer Да. Если qtreacor распознает, что проект версируется с помощью git, он дублирует все действия. Это включает как минимум создание, удаление, переименование и перемещение файлов.

Начиная с версии 1.2.90 Qt Creator показывает вложенные папки, которые существуют в папке проекта, как ветви в дереве проекта, если только для параметра Дерево фильтра не установлено значение Упростить дерево .

Только кажется невозможным создать подкаталоги в QT-CREATOR.

  1. Создайте несколько подкаталогов с помощью файлового проводника или командной строки в папке проекта (например, net / , gui / , test / , data / . )!
  2. Переместите существующие файлы в эти новые папки. И измените их пути в файле * .proj !
  3. Создавайте новые файлы также с самого начала в новых папках (By AddNew . )!

. QT-CREATOR отображает только такие папки, которые содержат файлы, записанные со своими именами в файл * .pro или * .pri. На корневом уровне QT-CREATOR различает ЗАГОЛОВКИ, ИСТОЧНИКИ, ФОРМЫ и ДРУГИЕ ФАЙЛЫ. Внутри этих корневых папок вы можете неоднократно находить собственные подпапки проекта. (В этом тексте не рассматривается разделение на подпроекты.)

Правда. Если проект Qt просматривается внутри Qt Creator и pri проекты используются должным образом, среда IDE отображает вещи в красивой вложенной форме. Однако на уровне файловой системы все файлы (кроме случаев использования subdir и создания подпроектов) находятся на одном уровне иерархии каталогов. Это делает вещи довольно громоздкими, когда кто-то просматривает проект в проводнике файлов (Windows Explorer, Thunar, Nautilus и т. Д.). Если требуется правильная файловая структура, то выполнение действий вручную (как предлагает здесь @CWIMMER) - единственный способ.

Вы можете создать подкаталог, если у вас есть файл, который вы хотите создать в нем. Перейдите в родительский каталог и «Добавить» в него файл. «Найдите» нужное место и создайте новую папку в окне просмотра. Согласитесь, это не совсем интуитивно понятно.

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