我已经写了一个小程序来在合成器(xfwm4,dcompmgr,cairo-compmgr)之间切换,以帮助处理nVidia可能遇到的video撕裂问题。 它会在系统托盘中创build一个图标,并执行其操作。 问题是,当我运行我的程序时,图标并不总是显示出来,并且在我切换到不同的合成器后,图标消失。 我已经在一个可以在这里看到的video捕获它: https : //www.youtube.com/watch?v = 31qqOiaOdfw
我正在使用:与Xfce的Manjaro Linux 64bit
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"); }
我有一个类似的问题,在我的情况下,托盘永远不会显示。
我也有:与Xfce Manjaro Linux 64位
我通过将面板更改为tint2来解决这个问题。 我认为这是一个xfce面板的问题。