如果 m_lsAnswerRet
存在于父窗口的某个类中,并且你想在子窗口中遍历这个哈希表,可以按照以下步骤进行:
确保能够访问父类的方法:确保你的子类可以通过调用父类的方法来获取
m_lsAnswerRet
。通常情况下,你可能需要一个公有方法来返回该成员。遍历
m_lsAnswerRet
:使用你提供的代码模板,前提是确保正确引用了父窗口。
下面是一个示例,展示如何在子类中访问并遍历来自父窗口的 QHash<QString, stSendDataOnePaper>
:
父类 (ParentClass)
class ParentClass : public QWidget {
Q_OBJECT
public:
QHash<QString, stSendDataOnePaper> m_lsAnswerRet;
// 方法返回 m_lsAnswerRet 的常量引用
const QHash<QString, stSendDataOnePaper>& GetlsAnswerRet() const {
return m_lsAnswerRet;
}
};
子类 (ChildClass)
class ChildClass : public QWidget {
Q_OBJECT
public:
ChildClass(ParentClass* parent) : QWidget(parent) {}
void printDataFromParent() {
for (auto it = parent()->GetlsAnswerRet().constBegin(); it != parent()->GetlsAnswerRet().constEnd(); ++it) {
QString key = it.key();
stSendDataOnePaper value = it.value();
// 在这里处理 key 和 value
qDebug() << "Key:" << key << "Value:" << value; // 假设stSendDataOnePaper支持输出
}
}
protected:
ParentClass* parent() const {
return static_cast<ParentClass*>(QWidget::parent());
}
};
使用说明
构造函数:在子类的构造函数中,你可以接受一个指向父窗口的指针。这样,子窗口就能访问到父窗口中的数据。
遍历哈希表:通过调用
parent()->GetlsAnswerRet()
来获取哈希表,并使用迭代器遍历。类型转换:如果你的
ChildClass
是从QWidget
继承而来的,确保使用适当的方法将其转化为ParentClass*
类型,以便访问父窗体中的方法和属性。
注意事项
- 确保你的
stSendDataOnePaper
类能够通过qDebug()
打印。如果没有重载流插入操作符(<<),请考虑添加。 - 当访问父对象时,要注意空指针情况。最好检查传递给子对象的父对象是否有效。
内容由零声教学AI助手提供,问题来源于学员提问