1. 程式人生 > >QTableWidget無法響應滑鼠點選(QMousePressEvent)的問題

QTableWidget無法響應滑鼠點選(QMousePressEvent)的問題

1 前言 使用QTableWidget顯示內容時想要通過觸發itemSelectionChanged()訊號時執行某些操作,但是在表格只有一行時發現此訊號無法觸發,即使點選空白區域。  因此想要捕獲父視窗的QMousePressEvent() 來觸發自定義訊號,發現在表格內的滑鼠點選事件無法被捕獲。

2 解決方案 使用Qt的事件過濾器,捕獲QTableWidget的視窗(viewPort)所發生的事件。  1、為QTableWidget安裝事件過濾器

tablewidget->viewport()->installEventFilter(this); 1 此處需要注意,必須是為tableWidget的viewport安裝事件過濾器

2、父視窗重寫bool eventFilter(QObject *obj, QEvent *e) 函式

bool MainWidget::eventFilter(QObject *obj, QEvent *e) {     if (obj == tablewidget->viewport())     {         if (e->type() == QEvent::MouseButtonPress){             emit sig_focusChanged();         }     }     return QWidget::eventFilter(obj,e); } 現在在tableWidget內的滑鼠點選事件都可以被捕獲了 ---------------------  作者:flist  來源:CSDN  原文:https://blog.csdn.net/baidu_33850454/article/details/80838305?utm_source=copy  版權宣告:本文為博主原創文章,轉載請附上博文連結!