Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
QT在运行时更改QSystemTrayIcon_Qt - Fatal编程技术网

QT在运行时更改QSystemTrayIcon

QT在运行时更改QSystemTrayIcon,qt,Qt,我试图在我的应用程序中的不同点更改QSystemTrayIcon,例如: void MainWindow::goOnline() { isOnlineFlag = true; QIcon xmediaIcon("://notificationLogo.png"); sti->setIcon(xmediaIcon); } void MainWindow::goOffline(bool manual) { isOnlineFlag = false;

我试图在我的应用程序中的不同点更改
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 const&) + 33
1   QtWidgets                       0x000000010207a2d6 QSystemTrayIcon::setIcon(QIcon const&) + 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
线程0崩溃::调度队列:com.apple.main-Thread
0 QtGui 0x0000000101813171 QIcon::运算符=(QIcon常量&)+33
1 QtWidgets 0x000000010207a2d6 QSystemTrayIcon::setIcon(QIcon const&)+22
2 com.yourcompany.app 0x000000010002b089主窗口::goOffline(bool)+617
3 com.yourcompany.app 0x00000001000bb736主窗口::qt_static_metacall(QObject*,QMetaObject::Call,int,void**)+19382
4 QtCore 0x00000001013edda6 QMetaObject::激活(QObject*,int,int,void**)+2550
5 QtCore 0x00000001013e6c93 QObject::事件(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\uuuu CFRUNLOOP\u正在调用\uu OUT\u以执行功能\uuuu+17
12 com.apple.CoreFoundation 0x00007fff9037dea2\uu CFRunLoopDoSources0+242
13 com.apple.CoreFoundation 0x00007fff9037d62f\uuu 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 _blockuntinexteventmatchinglistinmodewithfilter+65
18 com.apple.AppKit 0x00007fff837193de_dpsnextent+1434
19 com.apple.AppKit 0x00007fff83718a2b-[n应用程序下一个虚拟机任务:untilDate:inMode:dequeue:+122
20 com.apple.AppKit 0x00007fff8370cb2c-[n应用程序运行]+553
21 libqcocoa.dylib 0x0000000104e59d44 QCocoaEventDispatcher::processEvents(QFlags)+2404
22 QtCore 0x00000001013ba64d QEventLoop::exec(QFlags)+397
23 QtCore 0x00000001013bd652 QCoreApplication::exec()+354
24 com.yourcompany.app 0x0000000100007906 main+1558
25 com.yourcompany.app 0x0000000100006584开始+52

你知道问题出在哪里吗?

你能检查一下
xmediaIcon.isNull()是什么吗返回?已尝试:
如果(!xmediaIcon.isNull()){sti->setIcon(xmediaIcon);}
但这永远不会触发,因为这意味着您的图标无效或为空。你需要先修复你的图标,我想。如果我跳过isNull检查,它会改变图标,这样我就可以通过某种方式读取它