LINUX.ORG.RU

Иконка программы Qt c++

 ,


0

2

Добрый вечер всем. Запарился уже.... Вот сбацал я программу на QT на вянде,добавил иконку в файл icon.src прописал в .pro файле и вооля-иконка exe-шнику присвоена. А как сделать иконку программы в среде linux? Подскажите пожалуйста...

А как сделать иконку программы в среде linux?

В общем случае это невозможно, так как в Linux отсутсвует понятие «ресурсов в экзешнике» (винда берет первую инкопку из ресурсов, емнип). Для freedesktop-совместимых сред можно задать иконку в меню или на рабочем столе посредством .desktop-файла.

В файловом менеджере ROX-Filer можно задать кастомную иконку для ЛЮБОГО файла путем простого перетаскивания картинки в диалогое окно, но пользователь должен сделать это сам.

annulen ★★★★★
()

В Linux иконка приложения не хранится в исполняемом файле, её нужно хранить отдельно в файловой системе и указывать каждому (!) DE, где её брать.

Подробнее есть здесь: http://qt-project.org/doc/qt-4.8/appicon.html

schizoid ★★★
()
Ответ на: комментарий от annulen

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

ramillez
() автор топика
Ответ на: комментарий от ramillez

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

При правильной установке - нет.

также вопрос,почему то в убунту я не могу добавить свою скомпилированную программу в панель программ сбоку справа который:) Почему?

Потому что пользуешься Юнити (недо-ДЕ)

annulen ★★★★★
()
Ответ на: комментарий от ramillez

почему то в убунту я не могу добавить свою скомпилированную программу в панель программ сбоку справа который:) Почему?

Тебе нужно создать для программы файл *.desktop файл и поместить его сюды: /usr/share/applications/

winddos ★★★
()
Ответ на: комментарий от annulen

Вот я сделал на Рокс-файллере.как вы и описывали. но почему то в программе показывает,что икона установлена,а в папке также ...

ramillez
() автор топика
Ответ на: комментарий от ramillez

Открываешь свой ФМ, идёшь в каталог /usr/share/applications, и выбираешь из тучи .desktop файлов кучку на препарирование. Написали же ...

false ★★★★★
()
Ответ на: комментарий от false

а допустим я сделаю deb-пакет, это работа автоматизируется,не будет же пользователь скачавший программу сам всё это делать?

ramillez
() автор топика
Ответ на: комментарий от ramillez

Ну так готовый файл запакуй в deb пакет.
А лучше вместо ручной сборки deb собирай на openSuse Build Service, там легко настроить сборку сразу на все deb/rpm дистрибутивы.

winddos ★★★
()
Последнее исправление: winddos (всего исправлений: 1)
Ответ на: комментарий от CYB3R

Интересно, а какие DE и файловые менеджеры поддерживают эту фичу? Запихнуть можно, а отображается это где?

I-Love-Microsoft ★★★★★
()
Последнее исправление: I-Love-Microsoft (всего исправлений: 1)
Ответ на: комментарий от Begemoth

А у тебя нет?

Даже если ТС собирает софт для себя любимого, все равно имеет смысл упаковывать его в пакеты.
Нафига к этом случае совать иконки в ~/.local/share/applications?

winddos ★★★
()
Ответ на: комментарий от winddos

Даже если ТС собирает софт для себя любимого, все равно имеет смысл упаковывать его в пакеты.

Это зависит. Как я понял у ТС своя программа, если она активно развивается, то придётся часто обновлять пакет и устанавливать новую версию, что в первую очередь просто добавляет суеты (система сборки же ему новый пакет не установит). Если ему надо будет распространять программу или предоставить её нескольким пользователям компьютера - сделает пакет, установит как положено.

Begemoth ★★★★★
()

Сколько фейспалмов выше в треде ух!

https://trac.transmissionbt.com/changeset/13841

.desktop файл тебе все равно придется сделать.

Дополню. QRC ресурсы вконпиливаются в бинарь. Если не хотеть ресурсы в бинаре то нужно их класть в правильный /usr/share/program_name и уметь их подгружать. Ах да там жабист\скалист недавно хотел autotols для префикса, так вот просто используем DEFINES на основе INSTALL_PREFIX.

https://trac.transmissionbt.com/attachment/ticket/4050/linux-translations-dir...

bhfq ★★★★★
()
Последнее исправление: bhfq (всего исправлений: 2)

Ужас и моральный террор. Qt предоставляет свой кросплатформенный метод выставить appicon (это тот, который отображается в углу окна, например). Ищи в документации. Кроме того Qt предоставляет свой кросплатформенный метод запихнуть ресурсы в бинарник: их собственный компилятор ресурсов запихивает файлы в статический массив и позволяет обращаться к таким массивам как к файлам (ищи в документации). Иконку которая отображается в меню, лаунчерах и ещё хрен знает где рисует не приложение, а меня, лаунчер и ещё хрен знает что (скорее всего DE). Для того чтобы оно (хрен знает что) это делало ему потребуется специальный desktop-файл про твоё приложение и… иконка которая будет лежать отдельным файлом. Как писать desktop-файл ищи в документации^W^W^Wпосмотри в файлах которые уже есть у тебя в системе.

KblCb ★★★★★
()

Почитай про систему ресурсов Qt.

flareguner
()
Ответ на: комментарий от I-Love-Microsoft

ох не факт... не факт

Ну если человек не любитель переустанавливать шиндовс^W убунту каждые пол года, то таки лучше паковать.
Как минимум это приучает не оставлять лишнего хлама в системе своей и пользователя.
А если ты просто постоянно обновляешь бинарник, то делаешь вместо него симлинк на хоум, его пакетный менеджер тоже сотрет при удалении. :)

А то я помню наши девелоперские серваки, когда чуваки бинарники рассовывали себе по хоумам, а потом фиг пойми где актуальный лежит.

winddos ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.