2016-03-10 4 views
0

Я искал немного времени, чтобы выяснить, будет ли наше приложение Gtk + 3 (Gtk #, фактически, но привязано к Gtk + 3) легко конвертируемым, чтобы получать события касания, а не щелчки мыши. Это чистое исследование на данный момент, так как на самом деле у меня нет сенсорного экрана (вот почему я не могу легко проверить свои теории).Как вы разрабатываете простой код для входа Gtk + 3 touch?

Насколько я могу судить, Gnome 3 can indeed do this и документация, которая кажется актуальной, представляют собой жесты, найденные here.

Я не смог найти любой образец Gtk + код, так что я надеясь это простой вопрос инстанцировании один из классов жестов и просто установив его, чтобы доставить события в основной цикл событий.

Есть ли у кого-нибудь опыт с жесты Gtk, который может вести меня на простом примере? Предположим, у меня есть DrawableArea, и я хочу получить очень простое событие с одним касанием, которое дает мне событие с точкой в ​​области, которая была затронута.

Как только у меня это будет, я смогу построить на нем ручку, щипцы и так далее.

ответ

1

Вы не можете вводить события указателя как события касания: они принципиально разные, и они взаимодействуют с автоматом состояния распознавания жестов, который живет внутри GTK.

GTK имеет возможность (для целей отладки) эмулировать события касания с помощью указателя, хотя, очевидно, он не может эмулировать события с несколькими касаниями, поскольку указывающее устройство имеет только одну последовательность событий. Если у вас есть последняя версия GTK 3.x, вы можете использовать переменную окружения GTK_TEST_TOUCHSCREEN, установленную на ненулевое значение.

Если вы хотите знать, как использовать GtkGesture реализации в своих собственных виджетов, то я предлагаю вам посмотреть на ссылки GtkGesture API, и посмотреть на различные типы жестов, доступных, как GtkGestureSwipe или GtkGestureZoom. Вы должны добавить GtkGesture экземпляров вашему виджету при его создании, а затем поймать сигналы на конкретном жесте, когда они будут распознаны.

+0

ebassi, я не уверен, что понимаю вашу точку зрения в первых двух абзацах. Я не собирался эмулировать сенсорные события указателем, а я хотел бы выяснить, как его настроить, чтобы события касания могли быть захвачены в основном цикле. Другими словами, если пользователь коснулся области рисования, как бы настроить ее для приема тех, и какие события (сигналы) появятся в очереди? Или, если это не так, как это делается, как это делается? – paxdiablo

+0

Вы сказали, что у вас нет сенсорного устройства, поэтому я указал вам на режим отладки, который позволяет вам эмулировать один; если вы хотите обрабатывать жесты касания и тачпада, то вы должны использовать классы GtkGesture, которые предоставляет GTK. – ebassi