在Raspberry Pi上,基于Qt 5.5的应用程序停止接收来自触摸屏的鼠标点击,例如关闭QDialogBox
后停止。应该指出的是,USB鼠标保持正常工作。Qt 5.5:应用程序停止从Raspberry Pi的触摸屏接收鼠标点击
以下小应用程序也会出现此问题。主窗口仅包含一个QComboBox
。启动应用程序后,在触摸屏上单击QComboBox
,然后单击桌面上的选择,而不是选择A,B或C,以使选择再次消失。在此之后,小部件不再从触摸屏接收到鼠标点击。如果我们再次使用USB鼠标选择QComboBox
,通过实际点击两次,我们可以再次使用触摸屏。
应该指出,在我的主要应用程序后,用USB鼠标'修复'点击触摸屏将只选择例如QComboBox
即使艰难我点击其他地方。如果我观察鼠标按钮事件,通常每个MouseButtonPress
和MouseButtonRelease
都是成对出现的,即两个印刷机后跟两个版本。在锁定触摸屏之前,我会连续看到奇数个MouseButtonPress
事件。接下来的USB修复会连续展示一个奇数的MouseButtonRelease
事件。
还要注意的是使用USB鼠标打开QComboBox
然后通过单击桌面上的再次关闭它,将需要从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.5 - touchscreen-events only working in initial (first) window
Qt错误报告,我发现“修复”:https://bugreports.qt.io/browse/QTBUG-33143 – murray