Tray::Tray(QObject *parent) : QObject(parent) { //创建图标 QIcon icon = QIcon("TrayIcon.png"); trayIcon = new QSystemTrayIcon(this); trayIcon->setIcon(icon); trayIcon->setToolTip(tr("气象数据下载器")); trayIcon->show(); //气泡提示 QString titlec=tr("气象数据下载器"); QString textc=tr("程序已转到后台服务"); trayIcon->showMessage(titlec,textc,QSystemTrayIcon::Information,5000); //添加单/双击鼠标相应 connect(trayIcon,SIGNAL(activated(QSystemTrayIcon::ActivationReason)), this,SLOT(trayiconActivated(QSystemTrayIcon::ActivationReason))); //创建动作 minimizeAction = new QAction(tr("最小化"), this); connect(minimizeAction, SIGNAL(triggered()), SIGNAL(signal_hide())); restoreAction = new QAction(tr("还原"), this); connect(restoreAction, SIGNAL(triggered()),SIGNAL(signal_showNormal())); quitAction = new QAction(tr("退出"), this); connect(quitAction, SIGNAL(triggered()),SIGNAL(signal_quit())); //创建右键弹出菜单 trayIconMenu = new QMenu; trayIconMenu->addAction(minimizeAction); trayIconMenu->addAction(restoreAction); trayIconMenu->addSeparator();//分隔 trayIconMenu->addAction(quitAction); trayIcon->setContextMenu(trayIconMenu); }
void sdl_application::execute(window& win) { signal_init(); SDL_GL_SetSwapInterval(1); #ifdef EMSCRIPTEN emscripten_set_main_loop_arg(update_c_function, this, -1, 1); #else SDL_GL_SetSwapInterval(0); while (running) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); update_c_function(this); SDL_GL_SwapWindow(win.m_window); } #endif signal_quit(); }
int gere_key(int keycode, t_all *str_all) { t_fen *last; last = str_all->fen; if (keycode == XK_Escape) { if (!last) signal_quit(str_all, NULL); while (last->next) last = last->next; if (last->prev) last->prev->next = NULL; else str_all->fen = NULL; del_fen(last, str_all); gere_expose(str_all); } else if (str_all->fen && str_all->fen->type == FENTYPE_SAVE) key_fensave(str_all, keycode); else if (keycode == XK_s) str_all->fen = new_fen_save(str_all, get_winsave_param(str_all)); return (0); }
/** Handle interrupt signal */ static void signal_interrupt() { debug("%s", __FUNCTION__); signal_quit(); }