Russian Qt Forum
Апрель 30, 2024, 05:45 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как получить список приложений KDE в Qt  (Прочитано 4546 раз)
triggery
Гость
« : Июнь 10, 2013, 19:30 »

Ребята и просто добрые люди,  здравствуйте. Пытаюсь разобраться с меню приложений в KDE. не то что бы оно мне не нравится, как  тяга узнать как получается список приложений в меню Kickoff. Пытался откомпилить готовый проект KmrnuEdit(он мне показался попроще чем код самого меню) - так все получилось. Разбирался, но кода немало. Начал просто удалять что мне не нужно и компилить - даже получилось. Но вот беда: те части кода что мне казалось, отвечают за получения списка приложений я удалил из исходников, а список в TreeView все равно формируется. вот тут у меня начало ломаться мировоззрение и немного отчаялся уже. прошу помощи спецов и не только в этом, чтоб просто тыкнули носом в эти строчки кода. У меня методов в объектах почти не осталось -- а оно работает. как - не знаю... Может это из-за динамической библиотеки, которая почему создается - тоже загадка.
Прикреплю проект обрезанный как можно уже, но все же работающий у меня:
Думаю это будет поучительным уроком не только для меня, но и для тех кому высветится этот форум по поиску в гугле))))
Вот уже битый час сижу и не могу догнать, откуда этот список берется. Хочется конечно почитать и документацию, но ее по этому поводу увы, нету)))
Записан
triggery
Гость
« Ответ #1 : Июнь 10, 2013, 19:32 »

вот файл мой:
Записан
mutineer
Гость
« Ответ #2 : Июнь 10, 2013, 20:44 »

перепакуй в зип, пожалуйста
Записан
triggery
Гость
« Ответ #3 : Июнь 10, 2013, 22:05 »

перепаковал))))
Записан
Vass
Гость
« Ответ #4 : Июнь 10, 2013, 22:45 »

Код:
    foreach(const KSycocaEntry::Ptr &e, folder->entries(true, !m_showHidden, true, m_detailedMenuEntries && !m_detailedEntriesNamesFirst))
    {
        if (e->isType(KST_KServiceGroup))
        {
            KServiceGroup::Ptr g(KServiceGroup::Ptr::staticCast(e));
            MenuFolderInfo *subFolderInfo = new MenuFolderInfo();
            readMenuFolderInfo(subFolderInfo, g, folderInfo->fullId);
            folderInfo->add(subFolderInfo, true);
        }
        else if (e->isType(KST_KService))
        {
            folderInfo->add(new MenuEntryInfo(KService::Ptr::staticCast(e)), true);
        }
        else if (e->isType(KST_KServiceSeparator))
        {
            //folderInfo->add(m_separator, true);
        }
    }

Вот же, перебор и добавление айтемов в рутовый
Записан
triggery
Гость
« Ответ #5 : Июнь 11, 2013, 11:39 »

Спасибо, глаз уже совсем замылен))) Но мне казалось что увижу конструкцию:
Код:
TreeView *m_tree = new TreeView();
а потом инициализация в методе (для примера
Код:
FindMenu()
):
Код:
m_tree->FindMenu(m_rootFolder, "/путь/где/находится/файл/с/пунктами/меню");
Но этого не случилось.

Кстати, нашел почему создается динамическая библиотека -
Код:
 kde4_add_kdeinit_executable
  создает как исполняемый файл, так и шаред-либу)))
Записан
triggery
Гость
« Ответ #6 : Июнь 12, 2013, 17:16 »

Кстати, еще вопрос) Как же все таки собрать статически без шаред-либы libkdeinit4_kmenu_test_2.so (она создается во вложенной папке lib в каталоге исполняемого файла)?
пытаюсь вместо
Код:
kde4_add_kdeinit_executable( kmenu_test_2 ${mySources})
вставить
Код:
kde4_add_executable( kmenu_test_2 ${mySources})
.
Компилятор при этом сборка не проходит из-за тучи ошибок. В чем может быть проблема?
Записан
triggery
Гость
« Ответ #7 : Июнь 13, 2013, 01:32 »

Вот поигрался немного и разобрался. Таки куча, куча строк с ошибками в коде, что раньше компилился нормально. Почему - непонятно было. Очистил сорцы и хидеры, начал вводить сам код, тасовать строчки чтоб избавиться от "undefined reference to ..." и таки все получилось. Хотя, еще пришлось переименовать класс TreeView на AppsTreeView, наверно имя было зарезервировано, и подключить библу к простому проекту Qt нельзя было из-за матов... Теперь все ок))) спасибо))) Проект компилится статически.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.044 секунд. Запросов: 20.