Название: отловить перемещение мыши по дереву Отправлено: qlewer от Ноябрь 23, 2020, 18:36 не нашёл стандартного способа отловить перемещение и даже нажатие мыши на qtreewidget. в сети указывают, что необходимо переопределить qtreewdget. создал класс mytree, кинул на форму, правым кликом преобразовал в MyTree. класс MyTree.h:
Код: #ifndef MYTREE_H Название: Re: отловить перемещение мыши по дереву Отправлено: tux от Ноябрь 23, 2020, 19:15 installEventFilter(this);
Название: Re: отловить перемещение мыши по дереву Отправлено: qlewer от Ноябрь 23, 2020, 19:34 можете чуть подробнее? у меня есть EventFilter в основном классе программы, там я и обрабатываю события дерева. те, что могу
Название: Re: отловить перемещение мыши по дереву Отправлено: tux от Ноябрь 23, 2020, 20:05 MyTree(QWidget *parent = 0) : QTreeWidget(parent) {
installEventFilter(this); setMouseTracking(true); } Название: Re: отловить перемещение мыши по дереву Отправлено: tux от Ноябрь 23, 2020, 20:07 можете чуть подробнее? у меня есть EventFilter в основном классе программы, там я и обрабатываю события дерева. те, что могу Либо не обрабатываете правильно, либо обрабатываете не то. Сложно по куску кода увидеть всё целиком.Название: Re: отловить перемещение мыши по дереву Отправлено: qlewer от Ноябрь 23, 2020, 20:24 я ведь отправил весь код? после
Код: installEventFilter(this); Код: bool eventFilter(QObject* object, QEvent* event) Код: virtual void mousePressEvent(QMouseEvent *){} Название: Re: отловить перемещение мыши по дереву Отправлено: tux от Ноябрь 23, 2020, 20:51 У вас совершенно непонятно, что и как вы делаете. Обработчик то один, то несколько. В плане перехвата событий, QTreeWidget не отличается от любого другого класса.
Лучше всего сделать простейший пример проблемы (только полный), тогда можно уже конкретнее говорить. Лично я, так и делал, когда изучал Qt. Это проще и быстрее. Название: Re: отловить перемещение мыши по дереву Отправлено: qlewer от Ноябрь 23, 2020, 21:15 вот пустой проект с этой проблемой. на дереве ничего не нажимается. eventfilter никак не работает
Название: Re: отловить перемещение мыши по дереву Отправлено: tux от Ноябрь 23, 2020, 22:09 Просто поменяйте
installEventFilter(this); на QApplication::instance()->installEventFilter(this); и всё заработает. Название: Re: отловить перемещение мыши по дереву Отправлено: qlewer от Ноябрь 23, 2020, 22:57 я получаю нажатия от QWidgetWindow(0x4487a0, name = "MainWindowWindow") и от QWidget(0xebb588, name = "qt_scrollarea_viewport"), но не от дерева(
Название: Re: отловить перемещение мыши по дереву Отправлено: kambala от Ноябрь 24, 2020, 00:00 повесь фильтр на treeWidget->viewport() (qt_scrollarea_viewport наверное он и есть)
Название: Re: отловить перемещение мыши по дереву Отправлено: qlewer от Ноябрь 24, 2020, 09:46 выходит, никакие переопределения классов не нужны. создал пустой проект, добавил
Код: ui->treeWidget->setMouseTracking(true); Название: Re: отловить перемещение мыши по дереву Отправлено: tux от Ноябрь 24, 2020, 10:28 зачем тогда везде советуют переопределение, мне осталось непонятно Просто задачи разные бывают. Не всегда ведь можно простым фильтром обойтись. |