QVector<int>、QList<QString>
,以及一些我們自定義的結構體時,就會出現報錯:
1 > QOBject::connect:Cannot queue arguments of type 'QVector<int>'
2 > (Makesure 'QVector<int>' is registed using qRegisterMetaType().)
原因大概就是訊號槽的引數不支援你自定義的型別,只能識別QT庫中最基本的型別引數,所以需要對自定義型別進行註冊
qRegisterMetaType<QVector<int>>("QVector<int>");
注意,不是在定義型別,或者定義結構體的地方進行註冊,而是在所需要用到的類的建構函式中進行註冊,比如我的一個自定義類,需要用到自定義的結構體做訊號引數,就在他的建構函式中註冊一下
1 CameraStartStop::CameraStartStop(QWidget *parent):QObject(parent)
2 {
3 qRegisterMetaType<QVector<int>>("QVector<int>");//不註冊會警告
4 setParent(nullptr);
5 //......
6 }