C++ Qt-如何从QListWidget获取选定的自定义项?

C++ Qt-如何从QListWidget获取选定的自定义项?,c++,qt,qt-creator,C++,Qt,Qt Creator,我创建了从QListWidget派生的类OptionList,以及从QListWidgetItem派生的类ListItem 在类OptionList中,我尝试使用QList items=selectedItems()从列表中获取所选项目,但它显示以下错误: 请求从QList到非标量类型QList的转换 我知道selectedItems()函数返回QListWidgetItem的列表,有没有办法将此函数与我从QListWidgetItem派生的ListItem类一起使用 正确的方法是使用QList

我创建了从
QListWidget
派生的类
OptionList
,以及从
QListWidgetItem
派生的类
ListItem

在类
OptionList
中,我尝试使用
QList items=selectedItems()
从列表中获取所选项目,但它显示以下错误:

请求从QList到非标量类型QList的转换


我知道
selectedItems()
函数返回
QListWidgetItem
的列表,有没有办法将此函数与我从
QListWidgetItem
派生的
ListItem
类一起使用

正确的方法是使用
QList
获取
selectedItems()
的结果,并在需要从列表中获取项目时使用
ListItem*myItem=static_cast(项目)

但是,由于该列表仅包含指针,因此可以安全地执行以下操作:

QList<ListItem *> items = *reinterpret_cast<QList<ListItem *>*>(&selectedItems());
QList items=*重新解释强制转换(&selectedItems());

迭代列表时,只需对派生类型执行适当的转换(例如:
静态转换(item)
)。如果需要派生类指针的实际列表,则需要构建一个新的列表(迭代基类列表并将这些项添加到派生类列表中)
QList结果
用于(QListWidgetItem*it:selectedItems()){results