1. 程式人生 > >自定義型別用於訊號與槽之間的傳輸

自定義型別用於訊號與槽之間的傳輸

應用場景: 使用訊號和槽的時候可以傳遞引數,但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;
}

最後既可以在訊號中使用該型別了。。。