как вы перекалибруете сенсорные события для приложения Qt?

У меня есть простое приложение Qt5.2, оно построено для TI AM335x EVM (процессор на базе ARM). Он просто имеет 1 кнопку, которая включает несколько светодиодов на плате.

У меня проблема в том, что сенсорное событие не откалибровано на экран. Пример:

*************
*           *
*  []       *
*       X   *
*           *
*************

Так что если [] где кнопка, X это где вы должны коснуться, чтобы активировать его. Это как с ног на голову и назад. Я пробовал с более крупными приложениями (больше кнопок), и тенденция следует.

Теперь, когда я использую графический интерфейс пользователя Qt4.8, предоставляемый TI, сенсорный ввод работает как положено, поэтому по какой-то причине, когда я компилирую код 5.2, мне кажется, что его нужно перекалибровать, но я не уверен, как это сделать. ,

Мои вопросы:

  1. Кто-нибудь, работающий с Qt, сталкивался с чем-то подобным в прошлом?
  2. Кто-нибудь, кто знает Qt, знает, есть ли возможность программной перекалибровки? (Я не могу найти что-нибудь об этом на сайте Qt)

Дополнительная информация, которая может или не может быть полезна:

Моя среда Qt была настроена с помощью этой команды:

./ configure -prefix /usr/Qt5.2 -xplatform linux-am335x-g ++ -no-sse -no-sse2 -no-glib -no-cups -no-largefile -no-accessibility -no-openssl -no-gtkstyle — Открытый исходный код

Вслед за make а также make install, Мой путь обновлен, чтобы включить правильную версию набора инструментов TI и домашнюю настроенную / встроенную версию qmake:

mike @ mike-VirtualBox: /usr/Qt5.2/test_button$ echo $ PATH
/usr/Qt5.2/bin: /home/mike/ti-sdk-am335x-evm-06.00.00.00/linux-devkit/sysroots/i686-arago-linux/usr/bin: /Usr/local/Trolltech/Qt-4.8.5/bin: / Главная / микрофон / бен: / USR / Библиотека / LightDM / LightDM: / USR / местные / SBIN: / USR / местные / бен: / USR / SBIN : / USR / бен: / SBIN: / бен: / USR / игры: / Главная / микрофон / бен

Флаги, используемые в фактической команде компиляции:

arm-linux-gnueabihf-g ++ -c -march = armv7-a -marm -mthumb-interwork -mfloat-abi = hard -mfpu = неон -mtune = cortex-a8 -O2 -Wall -W -D_REENTRANT -fPIE -DQT_NO_DEBUG — DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I ../ mkspecs / linux-am335x-g ++ -I. -Я. -I ../ include -I ../ include / QtWidgets -I ../ include / QtGui -I ../ include / QtCore -I. -o main.o main.cpp

Приложение запускается с:

./ touch_keys -platform eglfs

Приложение:

main.cpp:

#include "mainwindow.h"#include <QApplication>

int main(int argc, char *argv[])
{
QApplication app(argc, argv);
MainWindow mainWindow;
mainWindow.showMaximized();
return app.exec();
}

mainwindow.cpp

#include "mainwindow.h"#include <QtCore/QCoreApplication>
#include <QDebug>
#include <QFile>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
// Create the button, make "this" the parent
m_button = new QPushButton("Light LEDs", this);

// set size and location of the button
m_button->setGeometry(QRect(QPoint(100, 100),
QSize(200, 50)));

// Connect button signal to appropriate slot
connect(m_button, SIGNAL(released()), this, SLOT(handleButton()));
}

void MainWindow::handleButton()
{
char buf[10];
// change the text
m_button->setText("Boom");

// resize button
m_button->resize(100,100);
}

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QPushButton>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
private slots:
void handleButton();
private:
QPushButton *m_button;
};

#endif // MAINWINDOW_H

6

Решение

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

Это означает, что evdevtouch не распознает сенсорный экран на am335x, это должно было быть исправлено в 5.2, но, очевидно, все еще нет. «Исправить» (обходной путь) — перевернуть экран вручную, экспортировав переменную среды QPA:

export QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS="rotate=180"

Это правильно преобразует координаты.

10

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]