1. 程式人生 > 其它 >【異常】Cannot queue arguments of type ‘cv::Mat‘

【異常】Cannot queue arguments of type ‘cv::Mat‘

技術標籤:Qt/C++異常筆記qt

文章目錄

異常描述

異常原因

解決方法

開發環境


異常描述

多執行緒傳遞cv::Mat,編譯時通過,執行時報錯,導致影象無法成功傳遞;

QObject::connect: Cannot queue arguments of type 'cv::Mat'
(Make sure 'cv::Mat' is registered using qRegisterMetaType().)

異常原因

訊號槽佇列中的資料型別必須是系統能識別的元型別,如果不是,則需要用qRegisterMetaType()註冊。

解決方法

在connect裡面加上屬性 Qt::DirectConnection

改之前:

connect(m_CurCam,&DalsaCam::SigGrabImage,this,&MainWindow::SlotGrabImage);

改之後:

connect(m_CurCam,&DalsaCam::SigGrabImage,this,&MainWindow::SlotGrabImage,Qt::DirectConnection);

測試通過

開發環境

Author:Lizhifun

OS:Windows 10 家庭中文版

Compiler:Microsoft Visual C++ Compiler 15.9.28307.1259(amd64)

Kit:Desktop Qt 5.14.2 MSVC2017 64bit

Qt Creator:4.11.1