Название: В программе сегфолтится isSystemTrayAvailable(). А в примере все в порядке. Отправлено: xintrea от Январь 11, 2009, 00:04 Здравствуйте!
Есть в Qt такой замечательный пример qtdemo/examples/desktop/systray, который показывает как работать с иконкой в систрее. На его основе я добавил код в свою прогу, и столкнулся с такой ситуацией. В функции main() у меня есть такой код Код: Q_INIT_RESOURCE(mytetra); Если раскомментировать закомментированный кусок, получим сегфолт. Стек вызовов при сегфолте выглядит так (читать снизу-вверх) Код: #0 0xb73bd508 in XInternAtom () from /usr/lib/libX11.so.6 Самое интересное, что подобный кусок кода в примере сегфолта не вызывает. Что делать? Как проверить наличие в системе системного трея, не вызвав при этом ошибку? Название: Re: В программе сегфолтится isSystemTrayAvailable(). А в примере все в порядке. Отправлено: Rcus от Январь 11, 2009, 00:28 Ошибка воспроизводится если вызвать QSystemTrayIcon::isSystemTrayAvailable() до создания QApplication, но вы же не делаете подобного... или делаете?
Название: Re: В программе сегфолтится isSystemTrayAvailable(). А в примере все в порядке. Отправлено: ритт от Январь 11, 2009, 00:40 делает
Q_INIT_RESOURCE вызывается до создания QApplication... Название: Re: В программе сегфолтится isSystemTrayAvailable(). А в примере все в порядке. Отправлено: xintrea от Январь 11, 2009, 00:46 Делаю.
Не думал, что проверка наличия систрея связана с наличием объекта приложения. Название: Re: В программе сегфолтится isSystemTrayAvailable(). А в примере все в порядке. Отправлено: Sergey B. от Январь 11, 2009, 08:46 QApplication всегда должен быть первым, до использования любых классов Q*
|