Как установить tslib и настроить Qt для его использования?

Я пытаюсь запустить приложения Qt на Raspberry Pi 3 с сенсорным экраном Waveshare LCD (с резистивным касанием) в качестве ввода-вывода. Я использую версию Qt 5.12, а операционная система Raspberry Pi - Raspbian Stretch. Я использую tslib в качестве драйвера ввода, потому что evdev не работает должным образом с моим прикосновением.

tslib решил проблему с evdev, но создал несколько новых проблем:

  1. Если я нажимаю на виджет и удерживаю его в течение некоторого времени, он генерирует одно MousePress, ждет несколько миллисекунд, а затем генерирует еще два MousePress.

  2. Когда я просто нажимаю (нажимаю сразу, а затем отпускаю) какой-то виджет, 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?

0 ответов

Другие вопросы по тегам