Qt5でシグナルの引数としてユーザー定義型を指定する場合は、Q_DECLARE_METATYPE
とqRegisterMetaType()
を使って方の登録を行う必要がある。
参考: http://doc.qt.io/qt-5/qmetatype.html#Q_DECLARE_METATYPE
ただしまれに(typedef
された型を登録する際?)登録を行っても以下のランタイムエラーが出てしまうことがある。
QObject::connect: Cannot queue arguments of type 'SomeUserDefinedType'
(Make sure 'SomeUserDefinedType' is registered using qRegisterMetaType().)
このような場合は以下の通りqRegisterMetaType()
の引数を設定することで回避できることがある。
qRegisterMetaType<SomeUserDefinedType>("SomeUserDefinedType");