QT переключает QSystemTrayIcon во время выполнения

#c #qt

#c #qt

Вопрос:

Я пытаюсь переключить QSystemTrayIcon во время выполнения. Но иногда приложение просто случайно вылетает.

В моем mainwindow.h:

 QSystemTrayIcon *sti = new QSystemTrayIcon(this);
  

В моем 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 внутри заголовка?

Комментарии:

1. Доступна ли какая-либо трассировка стека?

Ответ №1:

QSystemTrayIcon::setIcon использует ссылку на объект, объект, поскольку он объявлен в методе, выйдет из области видимости, как только метод завершится. Я не знаю, создает ли Qt внутреннюю копию значка, иначе это может быть причиной сбоя. Определите значки в файле ресурсов (это, как правило, лучшая практика) и используйте их оттуда.