#qt
#qt
Вопрос:
Я пытаюсь изменить QSystemTrayIcon
в различных точках моего приложения, например:
void MainWindow::goOnline() {
isOnlineFlag = true;
QIcon xmediaIcon("://notificationLogo.png");
sti->setIcon(xmediaIcon);
}
void MainWindow::goOffline(bool manual) {
isOnlineFlag = false;
QIcon xmediaIcon("://notificationLogoOffline.png");
sti->setIcon(xmediaIcon);
}
Но по какой-то причине приложение время от времени выходит из строя.
Журнал сбоев:
Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0 QtGui 0x0000000101813171 QIcon::operator=(QIcon constamp;) 33
1 QtWidgets 0x000000010207a2d6 QSystemTrayIcon::setIcon(QIcon constamp;) 22
2 com.yourcompany.app 0x000000010002b089 MainWindow::goOffline(bool) 617
3 com.yourcompany.app 0x00000001000bb736 MainWindow::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) 19382
4 QtCore 0x00000001013edda6 QMetaObject::activate(QObject*, int, int, void**) 2550
5 QtCore 0x00000001013e6c93 QObject::event(QEvent*) 51
6 QtWidgets 0x0000000101d55f2c QApplicationPrivate::notify_helper(QObject*, QEvent*) 300
7 QtWidgets 0x0000000101d58a1d QApplication::notify(QObject*, QEvent*) 6157
8 QtCore 0x00000001013bd0b2 QCoreApplication::notifyInternal(QObject*, QEvent*) 114
9 QtCore 0x000000010140e746 QTimerInfoList::activateTimers() 982
10 libqcocoa.dylib 0x0000000104e58fc5 QCocoaEventDispatcherPrivate::activateTimersSourceCallback(void*) 21
11 com.apple.CoreFoundation 0x00007fff9038c731 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ 17
12 com.apple.CoreFoundation 0x00007fff9037dea2 __CFRunLoopDoSources0 242
13 com.apple.CoreFoundation 0x00007fff9037d62f __CFRunLoopRun 831
14 com.apple.CoreFoundation 0x00007fff9037d0b5 CFRunLoopRunSpecific 309
15 com.apple.HIToolbox 0x00007fff86261a0d RunCurrentEventLoopInMode 226
16 com.apple.HIToolbox 0x00007fff862617b7 ReceiveNextEventCommon 479
17 com.apple.HIToolbox 0x00007fff862615bc _BlockUntilNextEventMatchingListInModeWithFilter 65
18 com.apple.AppKit 0x00007fff837193de _DPSNextEvent 1434
19 com.apple.AppKit 0x00007fff83718a2b -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] 122
20 com.apple.AppKit 0x00007fff8370cb2c -[NSApplication run] 553
21 libqcocoa.dylib 0x0000000104e59d44 QCocoaEventDispatcher::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) 2404
22 QtCore 0x00000001013ba64d QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) 397
23 QtCore 0x00000001013bd652 QCoreApplication::exec() 354
24 com.yourcompany.app 0x0000000100007906 main 1558
25 com.yourcompany.app 0x0000000100006584 start 52
Есть идеи, в чем может быть проблема?
Комментарии:
1. Можете ли вы проверить, что
xmediaIcon.isNull();
возвращает?2. пробовал:
if(!xmediaIcon.isNull()) { sti->setIcon(xmediaIcon); }
но это никогда не срабатывает3. Таким образом, это означает, что ваш значок недействителен или пуст. Я думаю, сначала вам нужно исправить свой значок.
4. Это изменение значка, если я пропущу проверку isNull, поэтому я предполагаю, что он каким-то образом сможет его прочитать