也许我在这里不了解一个基本概念,但是如何使用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/