QT切换QSystemTrayIcon在运行时

QT switching QSystemTrayIcon at runtime

本文关键字:运行时 QSystemTrayIcon 切换 QT      更新时间:2023-10-16

我试图在运行时切换QSystemTrayIcon。但有时应用程序只是随机崩溃。

In my mainwindow.h:

QSystemTrayIcon *sti = new QSystemTrayIcon(this);

In my mainwindow.cpp:

// In my online method:
QIcon xmediaIcon("://online.png");
sti->setIcon(xmediaIcon);
// In my offline method:
QIcon xmediaIcon("://offline.png");
sti->setIcon(xmediaIcon);

我做错了什么吗?应用程序启动后,一段时间后随机崩溃。我不确定我是否可以以某种方式初始化头内的2 xmediaIcon ?

QSystemTrayIcon::setIcon使用对象的引用,由于该对象是在方法中声明的,因此一旦方法结束,该对象就会超出作用域。我不知道Qt是否在内部复制了图标,否则它可能是崩溃的原因。在资源文件中定义图标(这通常是最佳实践)并从那里使用它们。