QSystemTrayIcon не всегда отображается

Я написал небольшую программу для переключения между композиторами (xfwm4, dcompmgr, cairo-compmgr), чтобы помочь с разрывом видео, которое можно испытать с nVidia. Он создает значок в системном трее, который имеет свои действия. Проблема в том, что значок не всегда отображается, когда я запускаю свою программу, и исчезает после переключения на другой композитор. Я запечатлел это на видео, которое можно увидеть здесь:
https://www.youtube.com/watch?v=31qqOiaOdfw

Я использую:
Manjaro Linux 64bit с Xfce
QtCreator v.2.8.0 с Qt 5.1

Может ли кто-нибудь помочь мне с этим?

compSwitcher.cpp

#include "compswitcher.h"#include "ui_compswitcher.h"#include <QMenu>
#include <QCloseEvent>
#include <QDebug>

compSwitcher::compSwitcher(QWidget *parent) :
QWidget(parent),
ui(new Ui::compSwitcher)
{
ui->setupUi(this);

createActions();
createIcon();
setIcon();
qDebug() << "Before trayIcon->show()\n";
trayIcon->show();
qDebug() << "After trayIcon->show()";

}

compSwitcher::~compSwitcher()
{
delete ui;
delete trayIcon;
delete menu;
delete xfwm4;
delete close;
delete dcompmgr;
}

void compSwitcher::createActions()
{
close = new QAction(tr("&Quit"),this);
QObject::connect(close, SIGNAL(triggered()), this, SLOT(endProgram()));

xfwm4 = new QAction(tr("&xfwm4"), this);
connect(xfwm4, SIGNAL(triggered()), this, SLOT(setXfwm4()));

dcompmgr = new QAction(tr("&dcompmgr"), this);
connect(dcompmgr, SIGNAL(triggered()), this, SLOT(setDcompmgr()));

cairo = new QAction(tr("&cairo-compmgr"), this);
connect(cairo,SIGNAL(triggered()), this, SLOT(setCairo()));
}

void compSwitcher::createIcon()
{
menu = new QMenu(this);
menu->addAction(xfwm4);
menu->addAction(dcompmgr);
menu->addAction(cairo);
menu->addSeparator();
menu->addAction(close);

trayIcon = new QSystemTrayIcon(this);
trayIcon->setContextMenu(menu);

}

void compSwitcher::setIcon()
{
QIcon ikona(":/new/prefix1/kuba_fan1.png");
trayIcon->setIcon(QIcon(ikona));

}

void compSwitcher::setXfwm4()
{
system("/home/dec/Programowanie/qt/compSwitcher/skrypty/xfwm4true.sh");
}

void compSwitcher::setDcompmgr()
{
system("/home/dec/Programowanie/qt/compSwitcher/skrypty/dcompmgr.sh");
}

void compSwitcher::setCairo()
{
system("/home/dec/Programowanie/qt/compSwitcher/skrypty/cairo.sh");

}

2

Решение

У меня была похожая проблема, в моем случае лоток никогда не показывает.

У меня также есть: Manjaro Linux 64bit с Xfce

Я решил это, изменив панель на tint2. Я думаю, что это проблема xfce-panel.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]