Qt 使用setUserData和userData要注意的问题

在学习Qt的过程中,给界面中存储一些有用的数据,这些数据对于用户来说都是至关重要的,它们在交互过程中大部分都会被用到,例如:单击一个Ui控件,可以获取绑定在控件上的数据。
例子如下
第一步:首先定义需要放在Ui控件中的结构体

struct DHStruct:QObjectUserData
{
   
    DHStruct()
    {
   
        index = 0;
        info = nullptr;
        size = QSize(0,0);
        pt = QPoint(0,0);
    }
    int index;
    QString info;
    QSize size;
    QPoint pt;

};
Q_DECLARE_METATYPE(DHStruct)

注意,这里使用派生自QObjectUserData类型,是为了后面能使用QObjectUserData类里的setUserData()和userData()这两个函数。如果不使用这两个接口,则不需要定义为QObjectUserData。
绝大部分存储用户数据的接口都使用的是QVariant,也就是我们常说的“万能变量”。对于自定义数据类型,如果要使用QVariant,就必须使用Q_DECLARE_METATYPE注册。通过添加Q_DECLARE_METATYPE()这个宏让QOject及其子类知道这个类型。

这里要注意的是如果要在队列信号使用或者用用槽连接,要先调用这个函数qRegisterMetaType()
【这里是在运行的时候,对他进行注册】

第二步:组装数据,放到Ui控件中

    ui->setupUi(this);
    QList<DHStruct> list;
    m_pCb &
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值