在实现了 tabletEvent(QTabletEvent *event) 和 mousePressEvent(QMouseEvent *event) 的 QWidget 派生类对象中,每次使用 TabletEvent::TabletPress 类型调用 tabletEvent 时都会调用 mousePressEvent。根据Qt 文档,这不应该发生:
事件处理程序 QWidget::tabletEvent() 接收 TabletPress、TabletRelease 和 TabletMove 事件。Qt 将首先发送一个平板电脑事件,然后如果它不被任何小部件接受,它将发送一个鼠标事件。
主窗口.cpp
#include "mainwindow.h"
#include "tabletwidget.h"
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent)
{
TabletWidget* tw = new TabletWidget(this);
setCentralWidget(tw);
}
Run Code Online (Sandbox Code Playgroud)
平板电脑.h
#ifndef TABLETWIDGET_H
#define TABLETWIDGET_H
#include <QWidget>
class TabletWidget : public QWidget
{
Q_OBJECT
public:
explicit TabletWidget(QWidget *parent = 0);
protected:
void tabletEvent(QTabletEvent *event) Q_DECL_OVERRIDE;
void mousePressEvent(QMouseEvent *event) Q_DECL_OVERRIDE;
signals:
public slots:
};
#endif // TABLETWIDGET_H …Run Code Online (Sandbox Code Playgroud)