Как я могу сделать новую установку 18.04 для автоматической настройки входа?

В настоящее время нет специальной библиотеки для доступа к функциям запуска от Qt C ++. Существует библиотека libunity, но она сильно ориентирована на glib, поэтому она не подходит для Qt. Как уже упоминалось в другом ответе, наиболее удобным способом интеграции с пусковой установкой является использование низкоуровневого dbus API.

Базовая концепция интеграции с пусковой установкой - вы посылаете сигнал на панель запуска с идентификатором приложения и набором свойств. Идентификатор приложения - это имя файла .desktop, обычно хранящегося в /usr/share/applications:

//create the signal
QDBusMessage signal = QDBusMessage::createSignal("/", 
    "com.canonical.Unity.LauncherEntry", "Update");

//set the application ID
signal << "application://firefox.desktop";

//set the properties
QVariantMap properties;
    ...
signal << properties;

//send the signal
QDBusConnection::sessionBus().send(signal);

Счетчик

Чтобы установить счетчик, вам нужно будет установить свойства чтобы подсчет был видимым и дал ему желаемое целочисленное значение:

qint64 counter_value = 1;
properties["count-visible"] = true; //set the count to visible
properties["count"] = counter_value; //set the counter value

Progress Bar

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

double progress_value = 0.5;
properties["progress-visible"] = true; //set the progress bar to visible
properties["progress"] = progress_value; //set the progress value

Quicklist

Быстрый список можно установить с помощью библиотеки Qt dbusmenu. Вам нужно будет включить файл заголовка:

#include 

Быстрый список создается как меню QMenu в Qt. Это меню экспортируется через dbusmenu с помощью объекта DBusMenuExporter. При экспорте вы передаете этому объекту уникальный путь, а затем ссылаетесь на этот путь, чтобы сообщить элементу запуска, какое меню отобразить в качестве быстрого списка.

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

QMenu *quicklist;
DBusMenuExporter *quicklist_exporter;

Затем в функции конструктора:

quicklist = new QMenu(this);
//exports the menu over dbus using the object: /com/me/myapp/quicklist
quicklist_exporter = new DBusMenuExporter("/com/me/myapp/quicklist", quicklist);

Чтобы добавить элементы в меню, используйте [addAction] (http: //qt-project.org/doc/ qt-5.0 / qtwidgets / qmenu.html # addAction), чтобы добавить объекты [QAction] (http: //qt-project.org/doc/qt-5.0/qtwidgets/qaction.html).

Чтобы установить быстрый список значка запуска, установите свойство «быстрого списка» для сигнала:

properties["quicklist"] = "/com/me/myapp/quicklist";

Настройка файла проекта

Вам нужно будет настроить. pro для добавления поддержки dbus: QT += dbus. Чтобы построить с поддержкой быстрого списка, вам нужно будет установить библиотеки разработки dbusmenu-qt (libdbusmenu*dev). Затем вы можете добавить в файл проекта следующие файлы, чтобы включить библиотеку dbusmenu:

#import the dbusmenu-qt library for quicklists
greaterThan(QT_MAJOR_VERSION, 4) {
    INCLUDEPATH += /usr/include/dbusmenu-qt5/
    LIBS += -ldbusmenu-qt5
} else {
    INCLUDEPATH += /usr/include/dbusmenu-qt/
    LIBS += -ldbusmenu-qt
}

Пример приложения

Чтобы увидеть полный пример, используя все функции запуска из Qt, посмотрите на этом низком уровне dbus API .

0
задан 11 May 2018 в 03:46

0 ответов

Другие вопросы по тегам:

Похожие вопросы: