Qt 的'QTableView' 类中的'mousePressEvent' 函数默认是被禁用的。如果需要在'QTableView' 上捕获鼠标点击事件,可以通过重新实现'QTableView' 的'viewportEvent' 函数来捕获鼠标点击事件。

下面是一个示例代码,展示如何在'QTableView' 中捕获鼠标点击事件:

#include <QtWidgets>

class CustomTableView : public QTableView
{
public:
    CustomTableView(QWidget *parent = nullptr) : QTableView(parent) {}

protected:
    void viewportEvent(QEvent *event) override
    {
        if (event->type() == QEvent::MouseButtonPress) {
            QMouseEvent *mouseEvent = static_cast<QMouseEvent*>(event);
            if (mouseEvent->button() == Qt::LeftButton) {
                // 处理鼠标左键点击事件
                qDebug() << "Left button pressed at" << mouseEvent->pos();
            }
        }

        // 调用父类的viewportEvent函数处理其他事件
        QTableView::viewportEvent(event);
    }
};

使用'CustomTableView' 类替代原来的'QTableView' 类,然后在'viewportEvent' 函数中处理鼠标点击事件。在示例代码中,如果鼠标左键按下,会在控制台输出鼠标点击的位置。

希望这个解决方案对你有帮助!

Qt QTableView 鼠标点击事件捕获方法

原文地址: https://www.cveoy.top/t/topic/qkYH 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录