返回派生的QTreeWidgetItem

时间:2012-11-06 10:28:58

标签: qt qtreewidgetitem

我认为这不是一个关于特别是Qt的问题,而是一个缺乏编程经验的问题。

我从QTreeWidgetItem派生了一个类,并添加了一些bolean标志。当我初始化QTreeWidget时,我按

添加其中两个
_NewItem1=MyQTreeWidgetItem(_treewidget);

比以后我通过

添加一些项目
_NewItem1_1=MyQTreeWidgetItem(_NewItem1);
_NewItem1_1->boleanvalue1=true;

如果我以后想要退回这些物品,我打电话

(MyQTreeWidgetItem)_NewItem1->child(i)

但这当然只是给我一个带有新初始化的bolean标志的MyQTreeWidgetItem。

我是否必须覆盖子函数以重新调整我之前初始化的真实项目?

1 个答案:

答案 0 :(得分:1)

_NewItem1->child(i)返回指向QTreeWidgetItem的指针,MyQTreeWidgetItemMyQTreeWidgetItem的基类。您已安全地投射到QTreeWidgetItem,考虑到它可能也是真实QTreeWidgetItem *item = _NewItem1->child(i); MyQTreeWidgetItem *myItem = dynamic_cast<MyQTreeWidgetItem>(item); if (myItem) { qDebug() << myItem->boleanvalue1; } else { qDebug() << item << "is not of type MyQTreeWidgetItem"; } 。这是通过C ++中的dynamic_cast实现的,它在运行时检查类型。

()

另一方面,如果可以进行这种转换,则类型转换运算符QTreeWidget允许将任何类型转换为任何其他类型而无需任何检查。例如,您已将指向MyQTreeWidgetItem的指针转换为{{1}}类型的对象。随后对变量的访问将产生运行时错误或意外结果。

相关问题