Я пишу приложение на C++ с Qt, которое использует системный лоток. Я реализовал системный лоток, используя класс QSystemTrayIcon, как показано в примерах, но он не имеет того же поведения, что и другие значки в системном трее, которые присутствуют на моем компьютере. Например, у меня есть Spotify, установленный на Ubuntu 12.04, и он показывает значок в системном трее с выпадающим меню. С моим приложением он показывает значок в системном трее с контекстным меню, то есть вы должны щелкнуть его правой кнопкой мыши, чтобы сделать меню активным. С помощью Spotify все, что нужно сделать, - это щелкнуть по значку и отобразить меню. Что я могу сделать, чтобы получить значки в системном трее в Ubuntu? Я в порядке с использованием специального кода для X11/Linux, а не встроенных функций Qt. Большое спасибо.Приложение для системного лотка Linux Qt/C++
Вот мой код:
void MainWindow::closeEvent(QCloseEvent *event)
{
if (trayIcon->isVisible()) {
hide();
event->ignore();
}
}
void MainWindow::createActions()
{
restoreAction = new QAction(tr("&Show"), this);
connect(restoreAction, SIGNAL(triggered()), this, SLOT(show()));
quitAction = new QAction(tr("&Exit"), this);
connect(quitAction, SIGNAL(triggered()), qApp, SLOT(quit()));
}
void MainWindow::createTrayIcon()
{
trayIconMenu = new QMenu(this);
accountsMenu = trayIconMenu->addMenu(tr("Accounts"));
trayIconMenu->addSeparator();
trayIconMenu->addAction(restoreAction);
trayIconMenu->addSeparator();
trayIconMenu->addAction(quitAction);
trayIcon = new QSystemTrayIcon(this);
trayIcon->setContextMenu(trayIconMenu);
}
Это отобразит меню, но оно отображает только контекстное меню, и я хочу, чтобы оно отображало неконтекстное меню. Я думаю, что это может иметь какое-то отношение к Unity, но я не уверен на 100%. –
Я буду отмечать ваш ответ как правильный ответ, но я все равно хотел бы знать, как связать себя в глобальной системе меню Ubuntu. Qt 4.8.1 по-видимому не использует глобальную систему меню, и я не могу найти параметр, чтобы включить его в сборках. –
Что вы подразумеваете под «системой глобального меню»? Меню, которое обычно находится в верхнем левом углу окна, которое в ubuntu в верхней части экрана? – graphite