【发布时间】:2012-08-05 21:27:00
【问题描述】:
这在 Qt 中是否可行?我有一个 QListWidget 设置,带有一个用于特定绘画的委托,并且我试图根据我的 QListWidget 父级中的变量让委托绘画不同。我想只要我有一个指向任何一个的指针,我就可以装配一些东西,但我需要在代表的paint() 中以某种方式得到它们。
我已经尝试过“hack”来将指针存储在 QVariant 中,但它似乎不起作用,我宁愿不采用这种方法。如果我可以得到指向委托所代表的项目的指针,然后调用 item->listWidget(),这将是完美的,但在委托内部似乎不可能。
有什么解决方法可以做到这一点吗?
另外,只是因为.. 尝试使 void* 技巧起作用的示例 - 如果这是这样做的唯一方法,也许有人可能会看到我的错误。
//Parent of QListWidget
....
QListWidgetItem *item = new QListWidgetItem();
....
QVariant v = qVariantFromValue((void *) pStitchSymbolCustom);
item->setData(Qt::UserRole + 6, v);
....
//Implemented QAbstractItemDelegate
....
MyClass* p_pointer =
(MyClass*)(index.data(Qt::UserRole + 6).value<void *>());
【问题讨论】:
标签: qt list delegates paint qlistwidget