Как установить tslib и настроить Qt для его использования?
Я пытаюсь запустить приложения Qt на Raspberry Pi 3 с сенсорным экраном Waveshare LCD (с резистивным касанием) в качестве ввода-вывода. Я использую версию Qt 5.12, а операционная система Raspberry Pi - Raspbian Stretch. Я использую tslib в качестве драйвера ввода, потому что evdev не работает должным образом с моим прикосновением.
tslib решил проблему с evdev, но создал несколько новых проблем:
Если я нажимаю на виджет и удерживаю его в течение некоторого времени, он генерирует одно MousePress, ждет несколько миллисекунд, а затем генерирует еще два MousePress.
Когда я просто нажимаю (нажимаю сразу, а затем отпускаю) какой-то виджет, tslib генерирует два MousePress и два MouseReleases вместо одного по одному.
Вот переменные среды, на которых я определил /etc/environment
:
QT_QPA_PLATFORM=xcb
QT_QPA_FB_TSLIB=1
QT_PLUGIN_PATH=/usr/local/qt5pi/plugins
QT_QPA_PLATFORM_PLUGIN_PATH=/usr/local/qt5pi/plugins/platforms
QT_QPA_GENERIC_PLUGINS=tslib:/dev/input/touchscreen
TSLIB_TSEVENTTYPE=INPUT
TSLIB_FBDEVICE=/dev/fb0
TSLIB_TSDEVICE=/dev/input/touchscreen
TSLIB_CALIBFILE=/etc/pointercal
TSLIB_CONFFILE=/etc/ts.conf
TSLIB_PLUGINDIR=/usr/local/lib/ts
И вот код, который я использую для тестирования tslib:
#include <QApplication>
#include <QPushButton>
#include <QDebug>
class Button : public QPushButton
{
Q_OBJECT
public:
using QPushButton::QPushButton;
protected:
void mousePressEvent(QMouseEvent* event) override { QPushButton::mousePressEvent(event); qDebug() << "Pressed"; }
void mouseReleaseEvent(QMouseEvent* event) override { QPushButton::mouseReleaseEvent(event); qDebug() << "Released"; }
};
int main(int argc, char* argv[])
{
QApplication app(argc, argv);
Button button {"button"};
button.setFixedSize({60, 30});
button.show();
return app.exec();
}
Запустив приведенный выше код и нажав (сразу же нажав и отпустив) кнопку, я получаю следующий вывод:
Pressed
Released
Pressed
Released
И когда я нажимаю кнопку, удерживаю ее и затем отпускаю, я получаю это:
Pressed
Pressed
Pressed
Released
Что может быть не так с моей системой? Я забыл определить некоторую переменную env?