在学习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 &