QEvent获取事件坐标
时间: 2025-01-27 17:15:50 浏览: 49
在Qt中,`QEvent`类用于表示事件对象。要获取事件发生的坐标,可以通过子类化的方式或者使用事件过滤器来获取事件的坐标信息。以下是一个示例,展示如何使用事件过滤器来获取鼠标事件的坐标:
```cpp
#include <QApplication>
#include <QWidget>
#include <QMouseEvent>
#include <QDebug>
class MyWidget : public QWidget {
protected:
bool eventFilter(QObject *obj, QEvent *event) override {
if (event->type() == QEvent::MouseButtonPress) {
QMouseEvent *mouseEvent = static_cast<QMouseEvent*>(event);
qDebug() << "Mouse pressed at:" << mouseEvent->pos();
return true;
}
return QWidget::eventFilter(obj, event);
}
public:
MyWidget(QWidget *parent = nullptr) : QWidget(parent) {
installEventFilter(this);
}
};
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
MyWidget widget;
widget.show();
return app.exec();
}
```
在这个示例中,`MyWidget`类继承自`QWidget`并重写了`eventFilter`方法。通过重写`eventFilter`方法,我们可以在事件传递到目标对象之前捕获并处理事件。当鼠标按钮被按下时,我们可以通过`QMouseEvent`的`pos`方法来获取鼠标事件的坐标。
阅读全文
相关推荐


















