Я хочу отображать всплывающие сообщения с QSystemTrayIcon
в моем приложении qt на Mac.Значок в трее появляется в правом углу строки меню Mac.Проблема в том, что всплывающее сообщение не отображается в El Capitan (10.11.6), но оно отображается в Sierra (10.12) и High Sierra (10.13).
Пример Qt Tray Icon отлично работает на Эль-Капитане.
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");
}
Заранее спасибо!