#include <QApplication>
#include <QWidget>
#include <QMouseEvent>
#include <QDebug>
class CustomWidget : public QWidget {
public:
CustomWidget(QWidget *parent = nullptr) : QWidget(parent) {}
protected:
bool event(QEvent *event) override {
if (event->type() == QEvent::MouseButtonPress) {
QMouseEvent *mouseEvent = static_cast<QMouseEvent*>(event);
if (mouseEvent->button() == Qt::LeftButton) {
qInfo() << "Left mouse button pressed at (" << mouseEvent->x() << ", " << mouseEvent->y() << ")";
return true; // 表示事件已被处理
}
}
return QWidget::event(event); // 返回false表示事件未被处理,继续传递
}
};
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
CustomWidget widget;
widget.setWindowTitle("Event Dispatching Example");
widget.setGeometry(100, 100, 300, 200);
widget.show();
return app.exec();
}
//#include "main.moc"
没有合适的资源?快使用搜索试试~ 我知道了~
Qt事件分发的Demo
共3个文件
user:1个
pro:1个
cpp:1个
0 下载量 188 浏览量
2023-10-14
11:18:28
上传
评论
收藏 4KB ZIP 举报
温馨提示
在Qt中,事件分发是指当一个事件发生时,Qt系统决定应该把这个事件传递给哪个QWidget的过程。Qt中的事件分发主要通过`event(QEvent *event)`函数来实现。QWidget的所有子类都继承了`event()`函数,可以在该函数中处理不同类型的事件。 + **使用说明:** 1. **重载`event()`函数:** 在需要处理事件的QWidget子类中,可以重载`event(QEvent *event)`函数。在该函数中,你可以根据`event->type()`的值判断事件类型,并处理相应的事件。 2. **返回值:** 在`event()`函数中,你可以根据需要处理事件,并返回`true`表示事件已被处理,不再传递,返回`false`表示事件未被处理,将被传递到父组件或者进一步传递给其他子组件。
资源推荐
资源详情
资源评论
收起资源包目录
9_4.zip (3个子文件)
9_4
main.cpp 995B
9_4.pro 1KB
9_4.pro.user 23KB
共 3 条
- 1
资源评论
三雷科技
- 粉丝: 3w+
- 资源: 100
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功