Skip to content

Commit 00fa825

Browse files
committed
点击扫码结果表格外部时取消表格内部的选中
1 parent 9388613 commit 00fa825

2 files changed

Lines changed: 23 additions & 0 deletions

File tree

src/CameraWidget.cpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
#include <QMetaObject>
77
#include <QDateTime>
88
#include <qaction.h>
9+
#include <qcoreevent.h>
910
#include <spdlog/spdlog.h>
1011
#include <QPushButton>
1112
#include <QComboBox>
@@ -214,6 +215,7 @@ CameraWidget::CameraWidget(QWidget* parent)
214215
{
215216
setWindowTitle("摄像头预览");
216217
setMinimumSize(800, 600);
218+
this->installEventFilter(this);
217219

218220
mainLayout = new QVBoxLayout(this);
219221
menuBar = new QMenuBar(this);
@@ -340,6 +342,7 @@ CameraWidget::CameraWidget(QWidget* parent)
340342
resultDisplay->horizontalHeader()->setSectionResizeMode(3, QHeaderView::Stretch); // 内容拉伸
341343

342344
resultDisplay->setAlternatingRowColors(true);
345+
resultDisplay->installEventFilter(this);
343346
mainLayout->addWidget(resultDisplay);
344347
}
345348
{
@@ -400,6 +403,16 @@ CameraWidget::CameraWidget(QWidget* parent)
400403

401404
}
402405

406+
bool CameraWidget::eventFilter(QObject* obj, QEvent* event) {
407+
if (obj == resultDisplay && event->type() == QEvent::FocusOut) {
408+
resultDisplay->clearSelection();
409+
}
410+
if (obj != resultDisplay && event->type() == QEvent::MouseButtonPress) {
411+
resultDisplay->clearFocus();
412+
}
413+
return QWidget::eventFilter(obj, event);
414+
}
415+
403416
void CameraWidget::onCameraIndexChanged(int index)
404417
{
405418
if (cameraStarted) {

src/CameraWidget.h

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,16 @@ class CameraWidget : public QWidget
6060
void stopCamera();
6161

6262
protected:
63+
/**
64+
* @brief 事件过滤器函数
65+
*
66+
* 用于捕获特定事件并进行处理,例如清除表格选择状态
67+
* @param obj 事件目标对象
68+
* @param event 事件对象
69+
* @return 如果事件被处理则返回 true,否则返回 false
70+
*/
71+
bool eventFilter(QObject* obj, QEvent* event) override;
72+
6373
/**
6474
* @brief 窗口隐藏事件处理函数
6575
*

0 commit comments

Comments
 (0)