Мне сложно объяснить эту конкретную головоломку, поэтому я постараюсь изо всех сил.
В платформе Qt есть 2 класса: QTreeWidget и QTreeWidgetitem.
Я вложил в подкласс QTreeWidgetitem:
class MyQTreeWidgetitem : public QObject, public QTreeWidgetitem
{
...
public:
int myCustomVariable;
}
Я добавляю это в QTreeWidget, делая что-то вроде:
MyQTreeWidgetitem *item = new MyQTreeWidgetitem;
item->myCustomVariable = 10;
tree->addTopLevelItem(item);
Теперь, если мне когда-нибудь понадобится вызвать tree-> topLevelItem (x), все, что я получу, это QTreeWidgetitem *.
Однако, что мне нужно, так это MyQTreeWidgetitem *, поэтому я:
MyQTreeWidgetItem *theitem = (MyQTreeWidgetItem*)tree->topLevelItem(n);
Проблема в том, что theitem-> myCustomVariable больше не равен 10.
Есть ли способ сохранить MyQTreeWidgetitem без изменений?