Qt-Filter过滤器

14 篇文章 0 订阅

Filter过滤器

过滤器分为两种:

事件过滤器 https://blog.csdn.net/Rebiy12/article/details/104917814
文件过滤器

文件过滤器

    #define VEDIO_PATH      "/usr/video"
    //设置过滤器
    QStringList filters;
    //设置文件信息列表
    QFileInfoList fileList;
    //路径文件
    QDir vedio_dir(VEDIO_PATH);
    //列表添加数据
    filters<<QString("*.jpg")<<QString("*.mp4");
    //jpg和vedio文件路径下查找
    vedio_dir.setFilter(QDir::Files | QDir::NoSymLinks); //设置类型过滤器,只为文件格式
    vedio_dir.setNameFilters(filters);  //设置文件名称过滤器,只为filters格式(后缀为.jpg等图片格式)
    fileList = vedio_dir.entryInfoList();
Qt中的过滤器Filter)是一种机制,它允许您在事件传递过程中拦截和处理事件。当您设置一个过滤器后,事件将首先传递到该过滤器,然后在传递到目标对象之前进行处理。因此,您可以使用过滤器来截获和处理目标对象的事件。 在Qt中,可以通过重载QObject类的eventFilter()方法来实现过滤器。该方法接受两个参数:要过滤的对象和事件。在该方法中,您可以根据需要处理事件,并选择是否传递事件到目标对象。 以下是一个简单的示例,演示如何在一个QWidget对象上设置过滤器: ```cpp class MyWidget : public QWidget { public: MyWidget(QWidget *parent = nullptr) : QWidget(parent) { // 设置过滤器 installEventFilter(this); } protected: bool eventFilter(QObject *obj, QEvent *event) override { if (obj == this && event->type() == QEvent::MouseButtonPress) { // 处理鼠标按下事件 qDebug() << "Mouse button pressed!"; // 不将事件传递到目标对象 return true; } // 将事件传递到目标对象 return QWidget::eventFilter(obj, event); } }; ``` 在这个例子中,我们在MyWidget对象上安装了一个事件过滤器,并重载了eventFilter()方法来处理鼠标按下事件。如果鼠标按下事件发生在该对象上,则输出一条消息并返回true,表示事件已经被处理,不需要再传递给目标对象。否则,我们将事件传递给父类的eventFilter()方法,以便它可以被传递到目标对象。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值