oi_wtf

Qt/KDE TrayIcons

Sep 1st, 2012
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <QtCore>
  2. #include <QtGui>
  3. #include <KStatusNotifierItem>
  4. #include <KMenu>
  5.  
  6. class Window : public QWidget{
  7.  
  8.     QSystemTrayIcon *trayIcon;
  9.     QMenu           *trayMenu;
  10.     KMenu           *trayMenu2;
  11.     QAction         *trayMenuQuit;
  12.     QAction         *trayMenuTest3;
  13.     QAction         *trayMenuTest;
  14.     QAction         *trayMenuTest2;
  15.     KStatusNotifierItem *kdetray;
  16.  
  17. public:
  18.     Window(){
  19.         trayMenuQuit = new QAction("Quit", this);
  20.         trayMenuTest = new QAction("Test", this);
  21.         trayIcon = new QSystemTrayIcon(this);
  22.         trayMenu = new QMenu(this);
  23.         trayMenu->addAction(trayMenuTest);
  24.         trayMenu->addAction(trayMenuQuit);
  25.  
  26.         trayMenuTest3 = new QAction("Test2", this);
  27.         trayMenuTest2 = new QAction("Test", this);
  28.         trayMenu2 = new KMenu(this);
  29.         trayMenu2->addAction(trayMenuTest2);
  30.         trayMenu2->addAction(trayMenuTest3);
  31.  
  32.         trayIcon->setContextMenu(trayMenu);
  33.         trayIcon->setIcon(QIcon::fromTheme("preferences-desktop"));
  34.         trayIcon->show();
  35.  
  36.         kdetray = new KStatusNotifierItem(this);
  37.         kdetray->setTitle("test");
  38.         kdetray->setIconByName("preferences-desktop");
  39.         kdetray->setStatus( KStatusNotifierItem::Active );
  40.         kdetray->setContextMenu(trayMenu2);
  41.  
  42.     }
  43.  
  44. };
  45.  
  46. int main(int argc, char **argv){
  47.     QApplication app(argc, argv);
  48.     if (!QSystemTrayIcon::isSystemTrayAvailable()) {
  49.         QMessageBox::critical(0, "Systray", "Couldn't detect any system tray on this system.");
  50.         return 1;
  51.     }
  52.  
  53.     Window w;
  54.     w.show();
  55.     return app.exec();
  56. }
Advertisement
Add Comment
Please, Sign In to add comment