系统托盘应用程序Linux Qt / C.
发布时间:2020-12-13 23:02:54 所属栏目:Linux 来源:网络整理
导读:我正在使用Qt编写一个使用系统托盘的应用程序.我已使用QSystemTrayIcon类实现了系统托盘,如示例所示,但它与我的计算机上存在的其他系统托盘图标的行为不同.例如,我在Ubuntu 12.04上安装了Spotify,它显示了一个带有下拉菜单的系统托盘图标.使用我的应用程序,
我正在使用Qt编写一个使用系统托盘的应用程序.我已使用QSystemTrayIcon类实现了系统托盘,如示例所示,但它与我的计算机上存在的其他系统托盘图标的行为不同.例如,我在Ubuntu 12.04上安装了Spotify,它显示了一个带有下拉菜单的系统托盘图标.使用我的应用程序,它会显示带有上下文菜单的系统托盘图标,这意味着您必须右键单击它才能激活菜单.使用Spotify,所有需要做的就是点击图标,菜单就会显示出来.如何在Ubuntu中获取本机系统托盘图标?我可以使用X11 /
Linux的特定代码,而不是内置的Qt函数.非常感谢.
这是我的代码: 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,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); } 解决方法
尝试从QSystemTrayIcon的
activated信号下拉菜单.
void Window::iconActivated(QSystemTrayIcon::ActivationReason reason) { switch (reason) { case QSystemTrayIcon::Trigger: // show your menu here } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |