Qt 5.5:应用程序停止从Raspberry Pi的触摸屏接收鼠标点击

时间:2016-06-21 10:57:19

标签: qt raspberry-pi

Raspberry Pi上的基于Qt 5.5的应用程序在关闭QDialogBox后停止从触摸屏接收鼠标点击。应该注意USB鼠标保持正常工作。

以下小型应用程序也会出现此问题。主窗口仅包含一个QComboBox。启动应用程序后,单击触摸屏上的QComboBox,而不是选择A,B或C,单击桌面以使选择再次消失。在此之后,小部件不再从触摸屏接收鼠标点击。如果我们再次使用USB鼠标选择QComboBox,通过实际点击两次,我们可以再次使用触摸屏。

应该注意的是,在使用USB鼠标进行'修复'后的主要应用程序中,点击触摸屏只会选择QComboBox,即使是其他地方点击也很难。如果我观看鼠标按钮事件,通常每个MouseButtonPressMouseButtonRelease成对出现,即两次按下,然后是两次发布。在锁定触摸屏之前,我连续看到奇数个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

中描述的问题相同

1 个答案:

答案 0 :(得分:0)

使用Qt版本5.3.2,我用QComboBox对这个问题进行了几周的讨论。我终于发现在命令行上将'-nograb'传递给你的Qt应用程序解决了这个问题,但仍然没有遇到真正的原因。希望它适合你!