我想在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");
}
提前致谢!