ラズベリーパイのMy Qt 5.5ベースのアプリケーションは、たとえばQDialogBox
を閉じた後にタッチスクリーンからマウスクリックを受信しなくなります。 USBマウスは正常に動作し続けます。Qt 5.5:ラズベリーパイのタッチスクリーンからマウスクリックを受信しなくなる
次の小さなアプリケーションでもこの問題が発生します。メインウィンドウにはQComboBox
という単一のウィンドウしか含まれていません。アプリケーションを起動したら、タッチスクリーン上のQComboBox
をクリックし、A、B、またはCを選択するのではなく、デスクトップをクリックして、選択が再び消えるようにします。この後、ウィジェットはタッチスクリーンからのマウスクリックをもう受信しません。 USBマウスでもう一度QComboBox
を選択すると、実際に2回クリックすることで、再びタッチスクリーンを使用できます。
私の主なアプリケーションでは、USBマウスを使用した「修復」の後、タッチスクリーンのクリックは、例えばQComboBox
の他の場所をクリックするだけで選択されます。マウスのボタンイベントを見ると、通常はMouseButtonPress
とMouseButtonRelease
がペアになります。これは2回のプレスとそれに続く2回のリリースです。タッチスクリーンをロックする直前に、奇数のMouseButtonPress
イベントが連続して表示されます。 USBの「修復」の次には、奇数のMouseButtonRelease
イベントが連続して表示されます。 、QComboBox
を開くためにUSBマウスを使用して、デスクトップ上でクリックすると、再びそれを閉じると同様に自分自身を修復するためにUSBマウスから回のクリックが必要になること
も注意してください。しかし、USBマウス自体が修復されます。
タッチスクリーンが無効にならないようにするにはどうすればよいですか?
ファイル:Bug.pro
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = Bug
TEMPLATE = app
SOURCES += main.cpp MainWindow.cpp
HEADERS += MainWindow.h
ファイル:main.cpp
#include <QApplication>
#include "MainWindow.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
ファイル:MainWindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget * parent = 0);
};
#endif /* MAINWINDOW_H */
ファイル:MainWindow.cpp
#include <QComboBox>
#include "MainWindow.h"
MainWindow::MainWindow(QWidget * parent) : QMainWindow(parent)
{
QComboBox * bx = new QComboBox(this);
bx->addItem("A");
bx->addItem("B");
bx->addItem("C");
setCentralWidget(bx);
}
evtest
によれば、タッチスクリーンはFT5406 memory based driver
を使用します。私はElement14から7インチのタッチスクリーンを使用しています。もちろん、私は適切なドライバをインストールしなかった可能性があるので、インストールされたパッケージについての詳細情報が必要な場合は、私に知らせてください。
P.S:これはおそらく、私はQtのバージョン5.3.2を使用して、数週間QComboBoxと、この問題に対する私の頭を叩いてきたQt 5.5 - touchscreen-events only working in initial (first) window
「修正」が見つかったQtバグレポート:https://bugreports.qt.io/browse/QTBUG-33143 – murray