Перезагрузка калибровки сенсорного экрана tslib - PullRequest
2 голосов
/ 21 декабря 2010

Справочная информация: Я работаю над довольно большим графическим интерфейсом на основе Qt, который обрабатывает все взаимодействия пользователя с сенсорным экраном. Программа разработана таким образом, что пользователю не нужно получать доступ к командной строке, чтобы что-либо делать, в том числе перекалибровать сенсорный экран. Я написал имитацию утилиты tslib ts_calibrate, которая работает как QWidget и может изменить файл калибровки tslib в /etc/pointercal.

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

Проще говоря, есть ли функция, доступная в одном из классов Qt, которая будет перезагружать файл калибровки tslib на лету, без перезапуска приложения? Я просмотрел справку по классу QWSServer , но не нашел ничего похожего на то, что я хочу.

Ответы [ 3 ]

4 голосов
/ 03 января 2011

Оказывается, что драйвер можно перезагрузить без перезапуска приложения.Для этого вы можете закрыть и заново открыть указатель (и), используя методы из класса QWSServer , например:

#include <QWSServer>

...

QWSServer::instance()->closeMouse();
QWSServer::instance()->openMouse();

Это приведет к перезагрузке калибровки tslib.файл.Например, если вы запустили программу с ошибочной калибровкой, исправьте файл калибровки для сенсорного экрана во время работы программы, а затем вызовите эти методы, указатель настроится на новую калибровку.

2 голосов
/ 31 декабря 2010

tslib не имеет ничего общего с Qt. Вы можете скачать исходники tslib и посмотреть, что делает tests / ts_calibrate.c.

0 голосов
/ 20 октября 2017

ts_reconfig() должен делать то, что вы хотите.

...