首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QSystemTrayIcon并不总是出现

QSystemTrayIcon并不总是出现
EN

Stack Overflow用户
提问于 2013-08-17 09:49:50
回答 1查看 512关注 0票数 2

我编写了一个小程序,在作曲家(xfwm4,dcompmgr,cairo-compmgr)之间切换,以帮助nVidia体验视频撕裂。它在系统托盘中创建一个有其操作的图标。问题是,当我运行我的程序时,图标并不总是显示出来,当我切换到不同的排序器后,图标就消失了。我在这里可以看到的视频中捕捉到了它:https://www.youtube.com/watch?v=31qqOiaOdfw

我使用的是: Manjaro 64位和Xfce

QT5.1中的QtCreator v.2.8.0

有人能帮我吗?

compSwitcher.cpp

代码语言:javascript
复制
#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");

}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-11 08:57:44

我也有类似的问题,在我的例子中,托盘从来没有出现过。

我也有: Manjaro 64位与Xfce

我通过将面板改为tint2来解决这个问题。我认为这是xfce面板的问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18287410

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档