QSystemTrayIcon气球消息未在El Capitan上显示

时间:2018-05-25 14:28:51

标签: c++ macos qt trayicon

我想在Mac上的qt app中显示带QSystemTrayIcon的气球消息。 托盘图标显示在mac菜单栏的右上角。问题是气球消息不会在El Capitan(10.11.6)上显示,但它确实在Sierra(10.12)和High Sierra(10.13)上显示。

虽然Qt Tray Icon example在El Capitan上运作得很好。

QSystemTrayIcon::isSystemTrayAvailable()QSystemTrayIcon::supportsMessages()都返回true。

我不知道该怎么办了。这是我的代码:

自定义托盘图标类(.h)

class MyTrayIcon
{

public:
    MyTrayIcon(QObject* parent = nullptr);
    ~ MyTrayIcon();

    void balloonMsg(const QString& title, const QString& message);

    QSystemTrayIcon* sysTrayIcon = nullptr;
};

自定义托盘图标类(.cpp)

MyTrayIcon::MyTrayIcon(QObject* parent)
{
    sysTrayIcon = new QSystemTrayIcon(QIcon("my_icon.png"), parent);
}

MyTrayIcon::~MyTrayIcon()
{
    delete sysTrayIcon;
}

void MyTrayIcon::balloonMsg(const QString& title, const QString& message)
{
    sysTrayIcon->show(); // the icon does show
    sysTrayIcon->showMessage(title, message); // the message doesn't show
}

主窗口类(.h)

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

    Ui::MainWindow *ui;

    MyTrayIcon* mTrayIcon = nullptr;

public slots:
    void btnClicked();
}

主窗口类(.cpp)

MainWindow::MainWindow() : QMainWindow(parent), ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    mTrayIcon = new MyTrayIcon(this);

    connect(ui->pushButton, SIGNAL(clicked(bool)), this, SLOT(btnClicked()));
}

void MainWindow::btnClicked()
{
    mTrayIcon->balloonMsg("my title", "my message");
}

提前致谢!

0 个答案:

没有答案