小编Tho*_*itz的帖子

即使 QTabletEvent 被接受,QWidget 的 mousePressEvent 也会被调用

在实现了 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)

c++ qt mouseevent qt5

5
推荐指数
1
解决办法
1384
查看次数

标签 统计

c++ ×1

mouseevent ×1

qt ×1

qt5 ×1