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

下面是一个示例代码,展示如何在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 mousePressEvent不起作用

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

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