Faça sniqt reconhecer todas as habilidades de bandeja (ou crie um indicador de trabalho no Qt)

9

Existe esse meu antigo tópico: Como eu crio um indicador de trabalho com Qt / C ++? onde eu fui sugerido para usar a biblioteca QSystemTray para fazer um ícone de bandeja no Ubuntu para o meu aplicativo.

O Sniqt é um programa que cuida do resto. Como se sabe, o Ubuntu se livrou dos ícones das bandejas. Em vez disso, agora usa indicadores e apenas indicadores. O Sniqt converte os ícones da bandeja Qt em indicadores de trabalho.

O problema é que ele não faz uma conversão muito decente. Ações como clique único, clique do meio etc. não funcionam, enquanto funcionam em sistemas que suportam ícones de bandeja.

Existe uma maneira de ter essas ações de volta? Posso usar o ícone QSystemTray e ainda ter essas ações interessantes (e muito úteis, na minha ocasião) no Ubuntu?

Eu ficaria feliz em saber a resposta para o outro tópico que eu falei anteriormente (como fazer um indicador de trabalho usando as bibliotecas GTK e evitar o travamento), também.

Link para o bug do Sniqt: link

    
por hytromo 01.12.2012 / 17:35

2 respostas

0

Parece que o Qt não suporta isso, pelo menos no Ubuntu Unity, mesmo que tenha um sinal 'ativado'. Então eu recomendo que você use o GTK e um trayicon normal, não vejo alternativa com o Qt. Você pode entrar em contato com os desenvolvedores do Qt para esclarecimentos sobre isso.

    
por Ceppo93 09.12.2012 / 18:05
1

O Unity, por opção, não suporta o que você está se referindo como "ícones decentes de bandeja". São indicadores ou nada. De lá você tem várias opções:

  • Aproveite os recursos de indicadores limitados. Você pode definir o menu que será usado pelo seu indicador com o método padrão QSystemTray.setContextMenu ().

  • Desconecte totalmente seu aplicativo da bandeja do sistema. Como em, transforme-o em um ícone flutuante na área de trabalho, que será capaz de aceitar cliques no meio e no botão direito, como God e Matthias Ettrich pretendiam. Você pode encontrar um exemplo simples de como fazer isso aqui: link (opcionalmente, isto apenas quando detecta que está a executar o Unity, ou seja, se $ DESKTOP_SESSION está definido como 'ubuntu'.)

  • Declarar que a unidade não é suportada. Esta não é uma boa opção.

Se você deseja usar a opção 1 ou 2, depende principalmente do que seu aplicativo faz.

    
por Balinares 05.08.2014 / 11:31