自定義型別用於訊號與槽之間的傳輸
阿新 • • 發佈:2019-01-09
應用場景: 使用訊號和槽的時候可以傳遞引數,但Qt只支援預設的型別,不支援自定義型別, 如果要使用自定義型別,需要通過2步來實現
第一步:在定義類的標頭檔案的尾部新增程式碼:
Q_DECLARE_METATYPE(Block);
class Block { public: Block(); Block(const Block &other); Block(const QRect & rect, const QColor &color); ~Block(); QColor color()const; QRect rect()const; private: QColor m_color; QRect m_rect; }; Q_DECLARE_METATYPE(Block);
第2步:
在原始檔中使用註冊函式,將該型別註冊到元物件系統中去即可。
Block::Block() { qRegisterMetaType<Block>(); } Block::Block(const Block &other) { m_color = other.color(); m_rect = other.rect(); } Block::Block(const QRect & rect, const QColor &color) { m_rect = rect; m_color = color; } Block::~Block() { } QColor Block::color()const { m_color; } QRect Block::rect()const { return m_rect; }
最後既可以在訊號中使用該型別了。。。