Название: как отличить полезные айтемы QListWidget от скроллбара? Отправлено: Гурман от Июня 03, 2010, 15:17 под конец рабочего дня моск уже плавится, не вижу, как сделать это...
есть список, унаследованный от QListWidget, отличается наличием обработчика клавиатуры, и обработчиком событий для реализации тултипа начинается этот обработчик так: Код: bool MytListWidget::event( QEvent* event ) собственно слямзено отсюда (http://doc.qt.nokia.com/4.2/widgets-tooltips.html) - и все работает, пока... курсор не зависнет на скроллбаре этого списка, тут же слет, поскольку внутри itemAt()->text() там что-то не определено то есть, логично проверку сделать, не оказался ли кусрор над полезной строкой списка, вроде бы даже есть int QListWidgetItem::type () - но с чем его сравнивать? в список добавлялись честные QString, но целочисленного типа я в упор у QString не вижу... ??? наверно все алиментарно, просто устал под конец дня Название: Re: как отличить полезные айтемы QListWidget от скроллбара? Отправлено: BRE от Июня 03, 2010, 15:24 Довольно опасная конструкция.
itemAt может спокойно вернуть 0, лучше это проверять. Код
Название: Re: как отличить полезные айтемы QListWidget от скроллбара? Отправлено: Гурман от Июня 03, 2010, 15:31 ну так оно и было... уже в отладчике увидел... ;D
Название: падает в Qt при обработке события was: как отличить полезные айтемы QListWidget Отправлено: Гурман от Июня 03, 2010, 15:50 но все равно ерунда какая-то происходит - если это мой айтем, я выдаю тултип, и сваливаю return true;, тут все хорошо
но если не мой, я честно сваливаю в виде return QWidget::event(event); по понятным причинам, так и в примере написано так вот, почему-то при скроллированнии вниз, когда скроллтаб упирается в нижний или верхний край, стабильно происходит падение где-то в потрохах Qt внутри этого обработчика, который я вызываю, в стеке видно множество внутренних вызовов если отключаю свой обработчик event то все нормально работает Название: Re: как отличить полезные айтемы QListWidget от скроллбара? Отправлено: BRE от Июня 03, 2010, 16:13 Показывай весь обработчик. ;)
Название: Re: как отличить полезные айтемы QListWidget от скроллбара? Отправлено: Гурман от Июня 03, 2010, 19:46 весь нет смысла, там чистая специфика, только выдача тултипа, а кроме этого ровно так:
Код: bool MytListWidget::event( QEvent* event ) вот при вызове последнего event(event) где-то внутри Qt валится при обработке mouse wheel event наверно надо QListWidget::event(event) вызывать, завтра посмотрю Название: Re: как отличить полезные айтемы QListWidget от скроллбара? Отправлено: zenden от Июня 04, 2010, 00:34 да с return QListWidget::event(event); не вылетает :)
Название: Re: как отличить полезные айтемы QListWidget от скроллбара? Отправлено: Гурман от Июня 04, 2010, 08:22 да, конечно
конечно, вызывать обработчик события надо у того класса, который непосредственно наследован, поскольку классы в иерархии выше знать не знают что там ниже понавешано, соответственно QWidget ни сном, ни духом про какие-то скроллбары /* просто под конец дня, после отладки нескольких сотен строк с нуля, моск уже сбоить начинает */ |