Форум сайта python.su
Здравствуйте!
Возникла довольно нестандартная проблема, над которой бьюсь второй день.
Есть машина на линухе, написал софтину на PyQT, предполагая, что софтина будет работать и управляться при помощи тачскрина.
Есть в софтине много QPushButton-ов. Когда управление происходит мышкой, то все ОК - я мышкой подвожу курсор к QPushButton-у и кликаю один раз левой кнопкой мышки, что приводит к эмиту сигнала clicked().
В случае же с тачскрином, чтобы нажать на кнопку нужно дважды клацать по самому тачскрину в одном и том же месте, т.к. софтина или линух воспринимает первый клик по тачскрину как перевод курсора на кнопку и только второй клик эмитит сигнал clicked(), т.е. в общем то поведение правильное, но хочется как-то сделать, чтобы первый клик по тачскрину не только переводил курсор, но и эмитил сигнал clicked()
Подскажите, пожалуйста, братцы, в какую сторону курить?
Огромное спасибо заранее!
Офлайн
А в других приложениях работает также? Первое впечатление: драйвер самого тач-скрина кривой.
Офлайн
Здравствуйте
Да, работает также и, да, кривой - полностью согласен
сейчас конечно паралельно ищу решение в самом линуксе, но буду рад помощи и со стороны pyqt
Офлайн
Для QLabel есть сигнал linkHovered, но для кнопок ничего подобного нету. Можно попробовать поиграться с QWidget.enterEvent или чем-то похожим. Посмотрите документацию на QWidget и доступные события, кроме сигналов.
Офлайн
Попробуй использовать tabletEvent. Или на крайняк enterEvent, чтобы виджет реагировал при наведении курсора, это правда хак, и есть в нем смысл только если софтина будет использоваться исключительно с тачскрином. Но лучше попытаться настроить драйвер, если есть такая возможность.
Отредактировано (Фев. 6, 2010 17:38:38)
Офлайн
pasaranaxУгу… А если я захочу два раза на одну и ту же кнопку нажать? И что будет, если после нажатия отрисуется другой диалог и какая-нить кнопка окажется под курсором?
enterEvent
Отредактировано (Фев. 6, 2010 17:52:59)
Офлайн
можно не enterEvent а focusInEvent
Офлайн
Переопределить QWidget::focusInEvent пробовали?
Офлайн
Господа, спасибо всем искренне за помощь!
Решил все-таки добить сами дрова тачскрина, т.к. хаками не хочется.
Как закончу - обязательно сообщу.
Еще раз спасибо!
Офлайн
еще раз всем огромное спасибо за помощь
в итоге последовал здравым советам и начал устранять первопричину проблемы - тачскрин
немного инфы. вдруг кому-то пригодится
тачскрин славной тайванькой компании aTouch, сделан на логике не менее славной компании eGalax
в комплекте и на сайте были драйвера EETI, которые, собственно, и создавали глюк
много и вдумчиво гуглил и нагуглил иксовый модуль xorg-xserver-input-evtouch (http://conan.de/touchscreen/evtouch.html), который умеет работать с eGalax-ами
минуя родные дрова EETI, в конфиге иксов добавил секцию с использованием драйверов evtouch, немного помучился с калибровкой и все чудно заработало
еще раз спасибо, братцы
Офлайн