【问题标题】:Creating tree models in qt and data mapping在 qt 和数据映射中创建树模型
【发布时间】:2011-05-27 15:31:05
【问题描述】:

我查看了树模型示例中的 qt 文档。我正在努力研究如何将我的数据结构映射到模型。

我有一个我想在树中显示的 mystructs 数组,有人可以提供有关如何执行此操作的任何帮助。结构如下图

struct mystruct{
    int id;
    float val;
    struct settings{
            QString setting_1;
            QString setting_2;
            bool on;
    };
};

我正在尝试将此结构适合 qt simpletreemodel 示例。

谢谢

【问题讨论】:

  • 您是否必须从树视图中与您的结构进行大量交互?如果没有,我不确定您是否应该进入视图/模型以获取这样的简单对象。您可以考虑坚持使用QTreeWidgetQTreeWidgetItems ...
  • 是的,我需要与视图交互

标签: c++ qt model tree


【解决方案1】:

你可以这样做:

将树实现为QTreeWidget

class YourTreeWidget : public QTreeWidget
{
public:
    ...
    //reimplement useful stuff of the QTreeWidget 
    //like onItemClicked(...)
};

然后实现绑定到mystruct实例的项目

class mystruct;
class YourTreeWidgetItem : public QTreeWidgetItem
{
public:
    YourTreeWidgetItem(mystruct*);
    mystruct* getData() { return data;}
private:
    mystruct* data;
}

稍后创建一个YourTreeWidget,并为阵列中的每个mystruct 实例添加一项。 不要忘记根据您在项目中输入的数据正确格式化您的QTreeWidget

setHeaderLabels( QStringList() << "Column 1" << "Column 2");
...

这又是一个简单的解决方案,但我认为您可以用它来做复杂的事情。

注意:当我说

你必须与结构交互很多

我的意思是你需要自定义选择、自定义版本、自定义显示...

【讨论】:

  • 感谢您抽出时间 vince,是的,许多不同的视图都将使用树模型
猜你喜欢
  • 1970-01-01
  • 2010-12-31
  • 1970-01-01
  • 2016-03-01
  • 1970-01-01
  • 2011-05-07
  • 2013-03-27
  • 2018-10-01
  • 1970-01-01
相关资源
最近更新 更多