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 版權宣告:本文為博主原創文章,轉載請附上博文連結!