GetOBSRef 解析

template <typename T>
static T GetOBSRef(QListWidgetItem *item)
{
return item->data(static_cast<int>(QtDataRole::OBSRef)).value<T>();

}

1)先分析一下item->data()

 

[virtual] QVariant QListWidgetItem::data(int role) const

Returns the item's data for a given role. Reimplement this function if you need extra roles or special behavior for certain roles.

role <<---static_cast<int>(QtDataRole::OBSRef)

2)再分析下QtDataRole::OBSRef

enum class QtDataRole {
OBSRef = Qt::UserRole,//OBSRef = UserRole
OBSSignals,
};

3)分析下UserRole

 enum ItemDataRole {
        DisplayRole = 0,
        DecorationRole = 1,
        EditRole = 2,
        ToolTipRole = 3,
        StatusTipRole = 4,
        WhatsThisRole = 5,
        // Metadata
        FontRole = 6,
        TextAlignmentRole = 7,
        BackgroundColorRole = 8,
        BackgroundRole = 8,
        TextColorRole = 9,
        ForegroundRole = 9,
        CheckStateRole = 10,
        // Accessibility
        AccessibleTextRole = 11,
        AccessibleDescriptionRole = 12,
        // More general purpose
        SizeHintRole = 13,
        InitialSortOrderRole = 14,
        // Internal UiLib roles. Start worrying when public roles go that high.
        DisplayPropertyRole = 27,
        DecorationPropertyRole = 28,
        ToolTipPropertyRole = 29,
        StatusTipPropertyRole = 30,
        WhatsThisPropertyRole = 31,
        // Reserved
        UserRole = 0x0100//其中的一种
    };

4)QVariant

QVariant行为类似于C/C++的union, 但在Qt中比union强大很多, QVariant内置支持所有QMetaType::Type里的类型如:int,QString,QFont等甚至QList<QVariant>,
QMap<QString, QVariant>等组成的任意复杂类型. 主要应该在Qt项中附带额外的数据,如setData(),setItemData()等,和数据序列化中.简单的说QVariant可存储任意类型.

5)使用

 GetOBSRef<OBSScene>(item)

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值