C++ Ubuntu12.10中的wxTaskBarIcon

C++ Ubuntu12.10中的wxTaskBarIcon,c++,wxwidgets,ubuntu-12.10,C++,Wxwidgets,Ubuntu 12.10,我在Ubuntu12.10下构建了wxWidgets 2.9.3(目前我必须坚持这个版本),我似乎无法使用wxTaskBarIcon类。wxWidgets附带的示例正在编译和运行,但图标本身没有显示在任务栏上。我检查了配置,我知道wxWidgets库的编译是使用默认设置执行的(对于任务栏支持,默认设置为“是”) 你知道如何让它工作吗?这个问题与wxWidgets和/或Ubuntu版本有关吗 编辑: 它肯定没有连接到wxWidgets版本(在wx 2.8、2.9.3、2.9.4下检查) 编辑2:

我在Ubuntu12.10下构建了wxWidgets 2.9.3(目前我必须坚持这个版本),我似乎无法使用
wxTaskBarIcon
类。wxWidgets附带的示例正在编译和运行,但图标本身没有显示在任务栏上。我检查了配置,我知道wxWidgets库的编译是使用默认设置执行的(对于任务栏支持,默认设置为“是”)

你知道如何让它工作吗?这个问题与wxWidgets和/或Ubuntu版本有关吗

编辑: 它肯定没有连接到wxWidgets版本(在wx 2.8、2.9.3、2.9.4下检查)

编辑2: 如有必要:
系统安装在VirtualBox 4.2.6上,并带有所有默认设置。我每周至少安装一次更新。

在Ubuntu下,因为11.04任务栏由Unity管理,默认情况下,Unity不允许所有程序将图标放在那里。您必须将应用程序列入白名单,才能让它访问任务栏。这里是我最初找到答案的地方:

基本上你必须打电话:

gsettings set com.canonical.Unity.Panel systray-whitelist "['JavaEmbeddedFrame', 'Mumble', 'Wine', 'Skype', 'YOUR_APPLICATION']"
然后注销,登录。这将把您的_应用程序添加到Unity.Panel白名单中。请记住,在这种情况下,您还必须事先列出该列表上的项目。您可以通过调用以下命令检查白名单的外观:

gsettings get com.canonical.Unity.Panel systray-whitelist
在我的情况下(当我在开发环境中工作时),我只是将它设置为
“['all']”
。这将允许所有应用程序访问任务栏

请记住,Ubuntu将放弃这样的支持,将来您应该使用AppIndicator库来实现这一目标。这意味着,wxTaskBarIcon即使使用白名单也不会工作,除非它使用AppIndicator库


资料来源:

也许你可以做一个演示,让我们看看你做了什么?你在使用哪个窗口管理器?在@JoachimPileborg顶部有很多警告,我可以发布我的代码示例,但这可能是不必要的,因为默认示例也不起作用。@ta.speot.is我使用的是Ubuntu 12.10中的默认示例(即Gnome 3.6.0)。我想你可以排除我链接的警告,wxWidgets落后的原因是什么?当然,
wxTaskBarIcon
应该得到一个
Appindicator
实现,我只能猜测这与事实有关,wxWidgets是面向GTK的,而不是Ubuntu。将
wxTaskBarIcon
调整到Ubuntu可能很困难,尤其是当
AppIndicator
的可能性远远小于gtk图标(显示事件等)时。根据我的经验,
AppIndicator
也不太可靠,因为我在那里发现了很多bug和奇怪的行为。