Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用Mono(Linux)显示系统托盘图标?_C#_Qt_Mono_Gtk#_System Tray - Fatal编程技术网

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

C# 如何使用Mono(Linux)显示系统托盘图标?,c#,qt,mono,gtk#,system-tray,C#,Qt,Mono,Gtk#,System Tray,我正在使用GTK#2.12,正如所描述的那样 但是,当我使用具有透明度的PNG图像时,KDE不希望重新绘制图像的透明部分。所以,我在图像的透明部分上看到了旧位图(不是面板栏) 我猜它可能是GTK本身内部的bug。因此,我正在寻找一种使用mono显示系统托盘图标的新方法。也许QSystemTrayIcon上的图书馆能做到。理想情况下,它应该是跨平台的。因此,在Windows上,它也应该显示 或者,我可以尝试为Linux版本实现平台调用(可能是最好的选择)。但请给我举个例子。。。我是Linux中Qt

我正在使用GTK#2.12,正如所描述的那样

但是,当我使用具有透明度的PNG图像时,KDE不希望重新绘制图像的透明部分。所以,我在图像的透明部分上看到了旧位图(不是面板栏)

我猜它可能是GTK本身内部的bug。因此,我正在寻找一种使用mono显示系统托盘图标的新方法。也许QSystemTrayIcon上的图书馆能做到。理想情况下,它应该是跨平台的。因此,在Windows上,它也应该显示


或者,我可以尝试为Linux版本实现平台调用(可能是最好的选择)。但请给我举个例子。。。我是Linux中Qt和平台调用的新手。

我认为您应该尝试更新gtk版本,因为您尝试使用的版本非常旧。这就像使用qt3左右。大约十年前他们还不错。对于这样一个基本的功能,这个bug很可能在很久以前就被修复了

如果你想坚持使用古老的软件,这里有一个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(); 
  }   
} 

为什么不直接使用
tray=newqsystemtrayicon(这个);托盘->设置图标(QIcon(:/gui/logo.png”);/*…*/;托盘->显示()?你知道Mono,GTK是什么意思吗?我需要代码允许使用C++来构建这个应用程序,而不是C++。是的,大约8年前我使用MNO,但是为什么需要MNO?我并不是说你不喜欢,但我要求你提供理由。是的,它是.Net应用程序。Gtk 2.12是十年前推出的——令人惊讶的是,它仍然适用于现代台式机。你考虑过移植到GTK3吗?这个错误很可能很久以前就解决了。我在哪里可以获得Mono的QSystemTrayIcon?我在哪里可以下载它?我了解如何使用QSystemTrayIcon。我不知道如何使用它获取程序集。@马克西姆:例如,但老实说,你不应该使用Qyoto,因为它没有维护。我写这篇文章只是为了迎接挑战,因为它是可以做到的。您应该会发现使用提供的bitbucket URL下载的库中缺少一些gtk#或本机mono-way.SetIcon。它只有属性图标。所以没关系。。。但最终执行的应用程序找不到dll“qyoto qtcore native”,它在该存储库中不存在。QtCore.SmokeInvocation-->System.DllNotFoundException:qyoto QtCore-native@Maxim当前位置写信给我时,请突出显示我的昵称。我刚刚注意到这个。。。请尝试从此处下载: