Qt开发如何让应用程序在centos 7(gnome shell)的系统托盘上显示

时间:2022-04-13 06:55:35
Qt开发如何让应用程序在centos 7(gnome shell)的系统托盘上显示, 如题

5 个解决方案

#1



    m_trayIconMenu = new QMenu(this);
    m_trayIconMenu->addAction(QStringLiteral("显示主窗口"), this, SLOT(show()));
    m_trayIconMenu->addSeparator();
    m_trayIconMenu->addAction(QStringLiteral("设置"));
    m_trayIconMenu->addAction(QStringLiteral("退出"), this, SLOT(close()));

    m_trayIcon = new QSystemTrayIcon(this);
    m_trayIcon->setIcon(QIcon(":/images/portait.png"));
    m_trayIcon->setToolTip(windowTitle());
    m_trayIcon->setContextMenu(m_trayIconMenu);
    m_trayIcon->show();
    connect(m_trayIcon, &QSystemTrayIcon::activated, this, &MainWindow::ev_trayIcon_activated);

#2


上述代码在gnome shell环境上能正确显示在托盘上吗? 我环境上这样的代码是不行的

#3


在GNOME SHELL环境上,在屏幕的右上角是gnome shell的extnsion,应该说怎样将程序显示在extension区域

#4


这个应该是gnome提供的接口了.多半Qt里面没有现成的..你只能翻看gnome的文档了.

#5


嗯,这个问题属于GNOME Shell问题,新的gnome shell已经把右上角整成"system area",即系统软件,这个在代码里写死了,参考/usr/share/gnome-shell/js/ui/panel.js, 无法在system area区域实现动态添加应用程序图标

#1



    m_trayIconMenu = new QMenu(this);
    m_trayIconMenu->addAction(QStringLiteral("显示主窗口"), this, SLOT(show()));
    m_trayIconMenu->addSeparator();
    m_trayIconMenu->addAction(QStringLiteral("设置"));
    m_trayIconMenu->addAction(QStringLiteral("退出"), this, SLOT(close()));

    m_trayIcon = new QSystemTrayIcon(this);
    m_trayIcon->setIcon(QIcon(":/images/portait.png"));
    m_trayIcon->setToolTip(windowTitle());
    m_trayIcon->setContextMenu(m_trayIconMenu);
    m_trayIcon->show();
    connect(m_trayIcon, &QSystemTrayIcon::activated, this, &MainWindow::ev_trayIcon_activated);

#2


上述代码在gnome shell环境上能正确显示在托盘上吗? 我环境上这样的代码是不行的

#3


在GNOME SHELL环境上,在屏幕的右上角是gnome shell的extnsion,应该说怎样将程序显示在extension区域

#4


这个应该是gnome提供的接口了.多半Qt里面没有现成的..你只能翻看gnome的文档了.

#5


嗯,这个问题属于GNOME Shell问题,新的gnome shell已经把右上角整成"system area",即系统软件,这个在代码里写死了,参考/usr/share/gnome-shell/js/ui/panel.js, 无法在system area区域实现动态添加应用程序图标