【发布时间】:2015-03-13 14:26:21
【问题描述】:
好的,所以我对这篇文章中包含的所有主题都有些陌生。 C++ 新手和 Qt 新手。话虽如此,我已经对这个主题进行了大量阅读,并且已经为此工作了很长一段时间。也许我没有正确地解决这个问题,或者我的方向完全错误。请帮助并建议我应该如何处理这个问题!
我正在基于以下类结构构建 QtreeView:(仅显示重要成员)
Class ScenarioManager // singleton
{
Qvector<object_A*> *AllObjectA's
}
Class Object_A
{
QString name
Qvector<double> numSet // 3 values inside
Qvector<double> numSet2 // 2 values inside.
QString type
Qvector<Object_B*> AllObjectB's //Object_B is an interface class with
//purely virtual functions
}
Class Object_C : Object_B
{
QString name
bool isTypeObjectC
Object_F* exact
}
Class Object_D : Object_B
{
String name
bool isTypeObjectC
Object_F* min
Object_F* max
QVector<Object_F*> AllObjectF's // setOfAllMins/Maxes that subdivide the
// region between min and max.
}
Class Object_F
{
double value
}
我已按照示例创建树视图,可在此处找到: http://doc.qt.io/qt-5/qtwidgets-itemviews-simpletreemodel-example.html
并成功地制作了我想要的视图,如下所示:
|__name__|__type__|__f-range__|__allobjectf_| // header data
|
|Object_A1-name __Object_A1_Type // under name and type fields
| |
| AllObjectC's // under name
| | |
| | Object_C1_name // under name
| | Object_C2_name
| | |______exact.value // under f-range
| AllObjectD's
| |
| Object_D1_name
| Object_D2_name
| |_____min.value '-' max.value // under f-range
| |__AllObjectF[0].min '-' AllObjectF[0].max//under allObjF
| |__AllObjectF[1].min '-' AllObjectF[1].max
| |__AllObjectF[2].min '-' AllObjectF[2].max
|
|Object_A2-name __Object_A2_Type....(repeat)
我的问题是,我仍然需要能够完成另外 2 项任务,我似乎无法使用该示例(在发布的链接中)作为模板来完成这些任务。
我的代码几乎完全相同地模仿了链接中的示例!模型类迭代我的场景管理器成员向量,构造树项,并以与 SetupModelData 函数几乎相同的方式粗略地构建带有字符串的 TreeView。
这一切都很好,除了我需要做以下事情。
- 在树中选择一个项目,单击删除按钮
- 完成此操作后,需要从树视图(及其子视图)中删除项目
- 并且该项目需要从原始场景管理器中完全删除。
- 在树中选择一个项目,并能够向该对象添加一个适当的子项。
- 需要在树视图中显示
- 并且需要添加到场景管理器的适当位置
对于我的生活,我无法弄清楚如何做到这一点,我已经尝试了一系列想法,但我无法成功。解决这个问题的最佳方法是什么?
有没有什么方法可以从树视图中获取更多的 QVarient 字符串?是否可以获得指向创建树的实际树节点的指针?如果我能做到这一点,我可以只修改要创建的树节点,并使用指向创建它们的场景管理器对象的指针并操作路由的东西。
但是最好的方法是什么?我无法找到任何具体概述我想要完成的任务的内容。
提前感谢您的帮助!
【问题讨论】:
-
您不是在构建视图,而是在构建模型。
-
确实感觉就像我在构建一个视图,我知道我不是,但是我的模型类总的来说感觉就像我构建了一个视图.....不过我知道你的意思!现在的诀窍是让它做我想让它做的一切。
-
嗨,Shootin4Aces,如果您找到了解决方案,请将其添加为答案,不要将答案放入问题中。
-
会的!没想到:)