Qt не видит файл ресурсов
И ещё один вопрос при запуске exe файла он требует библиотеки типа QtWidgetsd.dll я то могу их подключить но если я хочу передать программу кому - то у кого нет этих библиотек что мне делать? Возможно ли компилировать в один файл вместе с библиотеками? Или мне в ручную переносить библиотеки и распространять вместе с ними?
Так сложно сказать. Вы можете предоставить минимально компилирующийся вариант исходников программы с демонстрацией данной проблемы? Иными словами выложите такой архив с исходным кодом, иконками и проектными файлами, где эта проблема будет проявляться и проект можно будет собрать на другой машине.
На вскидку могу предположить что проблема в том, что вы используете ".ico"-формат для иконок. Попробуйте с иконками в png-формате.
И ещё один вопрос при запуске exe файла он требует библиотеки типа QtWidgetsd.dll я то могу их подключить но если я хочу передать программу кому - то у кого нет этих библиотек что мне делать?
Зависимость от QtWidgetsd.dll говорит в первую очередь о том, что вы используете для распространения Debug-версию своего приложения. Это влечет за собой огромные риски и проблемы, например, любой человек знакомый с дебаггером может получить исходный код вашей программы, ну и размер приложения вырастает на несколько сотен мегабайт. Поэтому скомпилируйте программу в Release (Ctrl+T -> Release).
Именно. Но только релизные версии библиотек и вашего приложения, это в пределах 50 МБ для Qt5 (libicu уж очень жирная) и 20 МБ для Qt4.
Возможно, но несколько сложновато, так как Qt распространяет только динамические версии своих библиотек. Поэтому вам сперва нужно будет собрать статическую версию Qt (возможно выкинув libicu), а затем собрать свою программу со статическим Qt и libgcc/libstdc++/libwinthread(libpthread). Таким образом размер программы может быть уменьшен до 3-6 МБ (если ещё использовать upx). Но следует помнить, что при статической линковке весьма непрозрачен вопрос лицензирования и кроме того, QtWebkit не может быть скомпилирован статически. Поэтому, если ваше приложение использует QtWebkit о статической линковке можно забыть.
Всех приветствую. Попытался подключить файл ресурсов с текстовиком. Добавил проверку, на возможность открытия файла и чтения. Если файл откроется и будет читабелен, то создастся таблица. Файл не пустой, так что прочесть точно можно. Но при запуске программы файл не читается, т.к. таблица не создается. Если проверку отключить, то таблица создается, отсюда вывод, что файл скорее всего не получилось открыть. Прилагаю скрины проверки и подключения ресурсного файла.
Не читается текстовый файл с SD-карты
Приложение считывает с сервера некий текстовый файл и сохраняет его на SD-карте. Путь к файлу.
Дано текстовый файл f, строка s. Получить текстовый файл g, состоящий из строк файла f, содержащие как фрагмент строку s
Вопрос. Что от меня хотят в этом задании? Дано текстовый файл f, строка s. Получить текстовый файл.
MikaSan, у вас, скорей всего, не скомпелился файл ресурсов.
Я добавила к себе в существующий проект, файл ресурсов и получила тот же эффект.
Попробуйте удалить каталог, который указан как каталог сборки (длинное название типа "build-. -Desktop_. - Debug") и пересоберите проект. Мне помогло.
Создание меню без использования ресурсного файла
Создаю меню при помощи функций CreateMenu(),CreatePopupMenu(). Добавлял пункты меню функцией .
Перечислить элементы диалогового окна на основании ресурсного файла
Помогите разобраться! Перечислите элементы диалогового окна, если в ресурсном файле выполнены.
Дан текстовый файл f. Записать в перевернутом виде строки файла f в файл g
Дан текстовый файл f. Записать в перевернутом виде строки файла f в файл g.Порядок строк в файле п.
Файл: занести в текстовый файл 5 строчек и вывести их из файла на экран
Где ошибка. Программа должна заносить в текстовый файл 5 строчек и потом выводить их же на.
А вот если запускать через exe'шник и библиотеки - начинаются проблемы
Директория с exe'шником:
Как видно, директория icons по отношению расположена корректно
Но при этом, при запуске, иконки не отображаются!
Так как же заставить их отображаться?
Как из Resource Files подгружать иконки для кнопки
Есть проект Win Forms VS 2008, использую C++. Для кнопки используется несколько разных иконок.
Не отображаются иконки
Не отображаются иконки svg, Че делать? <img src="img/prev_arrow.svg"></img> 100 раз проверял.
Не отображаются иконки
Здравствуйте ! Подскажите пожалуйста, почему у меня не отображаются иконки в программе. //.
Не отображаются иконки
Всем привет страница лидер-гк. рф/o-kompanii/ вот тут не пойму почему не отображаются иконки.
если вы используете ресурсные файлы, то все содержание ресурса будет скомпилинно в ехе-шник (если я не ошибаюсь), посему - пути к папке с иконками никак не влияют.
как у нас в проекте это дело сдаленно:
а где в твоем файле ресурсов префикс? Сначала добавь префик а потом только файлы у меня файл ресурсов вот так выглядит:
если вы используете ресурсные файлы, то все содержание ресурса будет скомпилинно в ехе-шник (если я не ошибаюсь), посему - пути к папке с иконками никак не влияют.
а где в твоем файле ресурсов префикс? Сначала добавь префик а потом только файлы у меня файл ресурсов вот так выглядит:
Добавлено через 1 минуту
This is useful if your application always needs a certain set of files (icons, translation files, etc.) and you don't want to run the risk of losing the files.
Всё, я сам решил проблему
Нашёл статью External binary resources
В которой описано как раз то, что мне нужно
А именно:
For example, a set of resource data specified in a .qrc file can be compiled in the following way:
rcc -binary myresource.qrc -o myresource.rcc
In the application, this resource would be registered with code like this:
QResource::registerResource("/path/to/myresource.rcc");
а вот вам и докозательство:
Неверно отображаются иконки
Добрый вечер! Давно заметил проблему, но раньше игнорил.. Почему-то браузер некорректно.
Не отображаются иконки на exe
Такая проблема: не показываются значки на проги везде, кроме стандартного explorer'a. Total.
Почему не отображаются иконки?
Почему не отображаются иконки (be, insta, vk, mail, telegram)? <!DOCTYPE html> <html.
Не отображаются иконки в PopupMenu
Необходимо сделать кастомное меню с отображением иконок в виде сетки. (в идеале - генерировать с.
Каждое серьезное приложение с графическим пользовательским интерфейсом (и не только) использует файлы ресурсов. При этом у вас есть два варианта: либо подключать ресурсы по относительным путям файловой системы, либо поместить их прямо внутрь бинарного файла приложения или библиотеки. У каждого из этих подходов есть свои преимущества и недостатки.
В первом случае (ресурсы - внешние файлы) приложение становится более гибким, поскольку ресурсы можно менять без пересборки, однако пользователи могут случайно (или специально) испортить часть ресурсов, нарушив корректность работы приложения. К тому же, если относительные пути приложения собьются, то файлы ресурсов не будут найдены.
С ресурсами, вшитыми в бинарный файл, ситуация прямо противоположная: приложение становится монолитным, исполняемый файл имеет большой размер, любое изменение требует пересборки, но случайно нарушить его работоспособность (например, подменив изображение) становится практически невозможно.
С учетом всех плюсов и минусов последний вариант в большинстве случаев является предпочтительным. О нем мы и поговорим.
Реклама
Использование ресурсов в приложении
Итак, qrc -файл готов и подключен к проекту. Осталось только воспользоваться преимуществами от его использования. И сделать это совсем не сложно:
Ключевым здесь является способ обращения к изображению (или любому другому файлу) из ресурсов. Путь строится следующим образом: сначала ставится двоеточие : , затем префикс /images , который мы сами выбрали, и наконец путь к файлу (или псевдоним) logo.jpg . В остальном все то же самое, что и при работе с обычными файлами, предназначенными только для чтения.
Создание файла с описанием ресурсов
Первым делом создайте файл с описанием тех ресурсов, которые собираетесь использовать. Он имеет следующий вид (назовем его res.qrc ):
В приведенном примере мы определили один префикс: /images . Его можно считать логическим каталогом ресурсов. Таких префиксов может быть сколько угодно. Например, если в вашем приложении есть звуковые эффекты, то вы можете добавить префикс /sounds . Для создания более глубокой иерархии используйте префиксы вида /some/long/prefix .
В тег вложены определения файлов, относящихся к соответствующему префиксу. В примере включено единственное изображение 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 -файл вы попадете в редактор ресурсов, который вполне интуитивно позволяет выполнить те же самые действия, которые мы выполняли вручную.
Реклама
Заключение
Использовать файлы ресурсов в Qt-проектах очень просто, поэтому если вам понадобилось добавить изображения, музыку или что-то еще в свое приложение, то теперь вы знаете, что нужно делать.
Что за ерунда? Имеется проект с Cmake на борту. я его открываю в Qt Creator(версия 3.5 с чем-то по моему). Открываю с помощью открытия файла CMakeLists.txt в корне проекта.
Всё хорошо, всё компилится и работает. Но вот в Qt никак не отображаются файлы .h
Как мне сделать так, чтобы в дереве проекта они отображались?
ЧЯДНТ? Гугль не помог(даже не подозреваю, куда гуглить надо)
а в cmakelists.txt они точно есть?
include_directories(.) возможно, это то, что тебе нужно.
в include_directories() прописана вся папка с хедерами. но в креаторе не видно ни одного хедера
да, есть. иначе бы не компилилось, и юзаю include_directories()
не помогает этот метод
Хедеры нужно добавлять в цели компиляции. Типа такого:
правильно я понимаю?
1) ДОписываем по Вашему экзамплу в проект.
2) Прогоняем cmake по-новой
3) Хедеры появляются в дереве проекта. Всё верно?
Ну, да. Я не помню деталей уже, но вроде это все что требуется.
попробуй что oh-la-la предложил на одном хедере и расскажешь, чем закончится :)
Спасибо большое! Это работает! Теперь внимание другой вопрос : можно ли так подключить все хедеры из этой папки(включая хедеры из вложенных папок) ? Просто руками всё это очень долго будет писать : там много хедеров
Qtc, в отличии от того же CLion, ничего ни за кого не выдумывает.
Поэтому показывает только те файлы, которые добавленны как сорцы к цели. Если ты хочешь показывать хидеры - либо добавь их к соответсвующей цели, как исходники, либо сделай фейковую цель, и добавь их к ней.
google:// glob cmake
Помниться ты уже поднимал такую тему.
нет, Вы меня с кем-то путаете. За ссылку спасибо большое
Проблема решена посредством применения File(GLOB ..) и add_executable.
Буду дальше знакомиться с cmake.
Если кто предложит более хорошее решение - буду рад его узнать.
Проблема решена посредством применения File(GLOB ..) и add_executable.
Буду дальше знакомиться с cmake.
Если кто предложит более хорошее решение - буду рад его узнать.
Решено!
Тут проблема не в CMake, а в том, что QtCreator не считает заголовочные файлы, отсутствующие в CmakeLists.txt частью проекта. Существует альтернативная реализация менеджера проектов CMake для QtCreator, возможно там поведение другое.
m0rph ★★★★★ ( 07.09.15 23:49:38 )
Последнее исправление: m0rph 07.09.15 23:50:17 (всего исправлений: 1)
CMake это кроссплатформа, поэтому, в той же студии - проблема повториться. А также в Code::Blocks, KDevelop(если они всё не испортили), Eclipse, и любой другой фигне, где кто то не насмотрелся на Jb и не накостылил.
Qtc в данном случае прав. Ибо фактически, нигде нет инфо об инклудах, их можно конечно, показыать наугад, все подряд, но качественно показывать только то, что используется в текущей конфиграции не выйдет, без дополнительного анализа кодовой базы, что в принципе разные задачи с управлением проектом и сборкой.
Проблема решена посредством применения File(GLOB ..) и add_executable
Дурацкое решение. Захочешь добавить новый файл - надо перезапускать cmake, и это не единственный минус.
Сам я вместо добавления файлов в add_executable добавлял фейковую цель, которая не собирается.
Читайте также: