c++ - 将 TreeView 链接到 TableView ? [Qt]

标签 c++ qt

如何使用 Qt 将 TreeView 链接到 TableView ?例如,我有一个包含项目列表的 treeView。我还有一个带有模型/ View 实现的 tableView,以便来自不同文件的数据填充表格。因此,假设每个文件的文件名(在本例中,所有文件都是 CSV)在 treeView 中列为一个项目。我想做的是链接 treeView 中的每个 .csv 项,以显示在 treeView< 中选择的 .csv 文件的解析内容。我希望该数据显示在 tableView 中。我已经分别实现了树和表——它们可以工作——我只是不知道如何将它们链接在一起。如何让我在 TreeView 中选择相应的项目后才在表格中显示我解析的数据?

最佳答案

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++ - 将 TreeView 链接到 TableView ? [Qt],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44711085/

相关文章:

c++ - 试图阻止银行程序在选择交易后结束。 C++

c++ - argc 和 argv 的目的是什么?

c++ - Qt 2D 寻路游戏中的动画

c++ - 字体大小更改后 Qt 小部件无法正确调整

QTextEdit.insertHtml() 很慢

c++ - (QT C++) 基于 slider /拨号值的动画 GIF

c++ - 通过地址/引用传递的问题

c++ - 编写多线程异常安全代码

c++ - 尝试在 FuncType 参数中使用 Void 函数时遇到错误

c++ - 在 MacOS 上使用 QOpenGLDebugLogger