我正在使用a QVariant
来存储指向我的对象的指针QComboBox
void MainFrame::initContainerBox(QComboBox *oBox)
{
IDataContainer *idc = new CSVContainer();
QVariant v(QVariant::UserType, idc);
oBox->addItem(idc->getContainername(), v);
void *idc1 = v.data();
if(idc1 == idc)
printf("Test\n");
}
Run Code Online (Sandbox Code Playgroud)
但是如何获取数据呢?当我使用data()
指针不同时,所以这似乎不正确.从gooogling我有一种印象,我必须为我想要使用的每个类注册一个类型QVariant
是正确的还是我可以检索没有它的值?
经过两天的谷歌搜索并尝试各种组合后,我终于找到了如何做到这一点.这是一个使用QComboBox
放置物品并将其取回的示例.IDataContainer *
是一个与Qt无关的任意类.
Q_DECLARE_METATYPE(IDataContainer *)
void MainFrame::initContainerBox(QComboBox *oBox)
{
IDataContainer *idc = new CSVContainer();
QVariant v;
v.setValue(idc);
oBox->addItem(idc->getContainername(), v);
QVariant v2 = oBox->itemData(oBox->currentIndex());
IDataContainer *idc1 = v2.value<IDataContainer *>();
if(idc1 == idc)
printf("Test\n");
}
Run Code Online (Sandbox Code Playgroud)
所以我的第一个使用方法value()
是在正确的轨道上,唯一缺少的是如何设置值和使用宏Q_DECLARE_METATYPE(IDataContainer *)
.
显然使用构造函数不起作用,因此必须调用setValue()
.如果有人知道如何使用构造函数,那么显示它会很好.
归档时间: |
|
查看次数: |
2520 次 |
最近记录: |