gpt4 book ai didi

c++ - 系统托盘应用 Linux Qt/C++

转载 作者:IT王子 更新时间:2023-10-29 01:24:21 26 4
gpt4 key购买 nike

我正在使用 Qt 使用系统托盘用 C++ 编写应用程序。我已经使用示例中所示的 QSystemTrayIcon 类实现了系统托盘,但它与我计算机上存在的其他系统托盘图标的行为不同。例如,我在 Ubuntu 12.04 上安装了 Spotify,它显示了一个带有下拉菜单的系统托盘图标。在我的应用程序中,它显示了一个带有上下文菜单的系统托盘图标,这意味着您必须右键单击它才能激活菜单。使用 Spotify,所有需要做的就是点击图标,菜单就会显示出来。我该怎么做才能在 Ubuntu 中获取 native 系统托盘图标?我可以使用 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, 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);
}

最佳答案

尝试下拉菜单 activated QSystemTrayIcon 的信号。

void Window::iconActivated(QSystemTrayIcon::ActivationReason reason)
{
switch (reason) {
case QSystemTrayIcon::Trigger:
// show your menu here
}
}

关于c++ - 系统托盘应用 Linux Qt/C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10647104/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com