如何使用Mono(Linux)显示系统托盘图标?

时间:2014-12-27 18:24:04

标签: c# qt mono gtk# system-tray

我正在使用GTK#2.12,因为它描述为here

但是当我使用具有透明度的PNG图像时,KDE不想重绘图像的透明部分。所以,我在图像的透明部分看到旧的位图(不是面板条)。

我猜它可能是GTK#本身的bug。所以,我正在寻找一种使用单声道显示系统托盘图标的新方法。也许QSystemTrayIcon上的一些库可以做到这一点。理想情况下,它应该是跨平台的。因此,在Windows上,它也应该显示。

或者,我可以尝试为Linux版本实现平台调用(也许是最佳选择)。但请给我一些例子......我是Linux中Qt和平台调用的新手。

1 个答案:

答案 0 :(得分:1)

我认为您应该尝试更新您的gtk版本,因为您尝试使用的版本非常旧。这就像使用Qt 3左右。大约十年前他们还可以。很可能很久以前就已经修复了这个基本功能。

如果你想坚持使用古老的软件,这里有一个Qt包装解决方案,只是为了挑战它。

来自KDE的

QYoto不再那么多了,但它可能仍然是包装器中的最佳选择,所以这里是示例代码:

using Qyoto;

class Program { 
    public static void Main(string[] args) { 
        new QApplication(args); 
        var tray = new QSystemTrayIcon(this);
        tray.SetIcon(new QIcon(":/gui/logo.png"));
        ...
        tray.Show();
        QApplication.Exec(); 
  }   
}