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

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

最佳答案

Qt itemviews系统不会自动为您提供此功能,但是使用信号/插槽连接很容易获得所需的行为。

特别是,您想要的(据我所知)是,每当用户在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())

关于c++ - 将树形 View 链接到表格 View ? [Qt],我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44711085/

10-15 01:56