将树视图链接到表视图? [Qt的]

时间:2017-06-23 00:01:58

标签: c++ qt

也许我不明白这里的基本概念,但是如何使用Qt将树视图链接到表格视图?例如,我有一个treeView,其中包含一系列项目。我还有一个带有模型/视图实现的tableView,以便来自不同文件的数据填充表。因此,假设每个文件的文件名(在这种情况下,所有文件都是CSV)都列在treeView中的项目中。我想要做的是链接.csv中的每个treeView项,以显示在treeView中选择的.csv文件的已解析内容。我希望这些数据显示在tableView中。我已经分别实现了树和表 - 他们工作 - 我只是不知道如何将它们链接在一起。只有在我选择树视图中的相应项目后,如何才能使解析后的数据显示在表格中?

这似乎是一个非常基本的概念,但我不确定要搜索什么来解决问题。

1 个答案:

答案 0 :(得分:1)

Qt项目浏览系统不会自动为您提供此功能,但使用信号/插槽连接可以轻松获得所需的行为。

特别是,你想要的(据我所知)是每当用户在QTreeView中选择一个不同的行时,QTableView应该用QTreeView中的行所代表的.CSV文件的内容重新填充自己。

假设我正确理解了您的用例,您需要将QTreeView的SelectionModel对象的selectionChanged()方法连接到将执行表重新填充操作的某个插槽。例如:

connect(myTreeWidget->selectionModel(), SIGNAL(selectionChanged(const QItemSelection &, const QItemSelection &)), someObjectInYourProgram, SLOT(RepopulateTableView()));

...然后让您的RepopulateTableView()插槽方法查看当前在QTreeView对象中选择的行,并根据它们重新填充其内容。

(旁注:您可以让RepopulateTableView()直接从selectionChanged()信号中获取参数并根据需要使用它们,但我经常发现使用指针检查QTreeView的selectionModel对象更有用。单独提供,因为这样可以更容易地从除此信号之外的其他上下文调用RepopulateTableView())