修改QTabWidget中的选项卡,其中每个选项卡代表一个QTableView
Modify a tab in a QTabWidget where each tab represents a QTableView
我有一个标签小部件,其中每个标签是一个QTableView。我希望能够传递一个更新的模型(QModelIndex)到每个选项卡,每当该选项卡的内容需要改变。
对我来说,另一种方法(也是更糟糕的方法)是删除所有的选项卡,然后重新创建它们。
我知道我可以这样做:
tabWidget->widget(i);
这将返回一个小部件,它实际上是一个QTableView,但我想更新小部件中的模型,而不必删除和重新创建选项卡。
谢谢!
注:这是我当前的尝试…
for (int i = 0; i < tableView.size(); i++)
{
tabWidget->setCurrentWidget(tableView.at(i));
QTableView* updatedTable = (QTableView*)tabWidget->currentWidget();
updatedTable->setModel(dataModel);
tableView.replace(i, updatedTable);
}
不清楚为什么不能保留QTableView小部件而只是更改模型,就像在代码中一样。如果没有这个tableView.replace
,视图不会刷新吗?
似乎没有一个直接的API来替换你用addTab()插入的小部件,而不需要经过选项卡删除步骤。但是,不是直接插入QTableView,您可以在具有单个项目布局的虚拟小部件上调用addTab()。一个QStackedLayout,例如:
QWidget* dummy = new QWidget;
QStackedLayout stackedLayout = new QStackedLayout;
stackedLayout->addWidget(tableView);
dummy->setLayout(stackedLayout);
tabWidget->addTab(dummy);
然后,当你想用一个新的tableView替换tableView时:
QWidget* dummy = tabWidget->currentWidget();
QStackedLayout newStackedLayout = new QStackedLayout;
newStackedLayout->addWidget(newTableView);
delete dummy->layout();
dummy->setLayout(newStackedLayout);
我仍然在想,这给你带来了什么,重用旧的表视图不能做。
相关文章:
- 如何在选项卡视图Qt中设置一个新项目,并保存以前的项目
- Win32编译器选项和内存分配
- QTableView:endMoveRows在模型中重置水平页眉大小
- C/C++预处理器是否可以检测一些编译器选项
- 是否有C++编译器选项允许激进地删除所有函数调用,并将参数传递给具有空体的函数
- 将--whole archive链接器选项与CMake和具有其他库依赖项的库一起使用
- 将QIcon添加到QTableView单元格
- 通过选项卡的文本设置QTabWidget顺序
- 通过ccmake在cmake中缓存依赖选项
- 如何传递多个 std::文件系统选项?
- 基于编译器选项的编译二进制路径
- "perf_event_attr"结构的"read_format"属性的选项到底是什么?
- 如何在QTableView中排序和更改日期格式
- 如何应用 libcurl 的持久连接选项
- 在qtableView中编辑单元格之后,如何避免使用选项卡键进行编辑模式
- 选项卡到qtableView中的下一个可见列
- 如何禁用控制+QTableView的快捷方式并防止全选选项
- 主窗口中的QTableView和选项卡排序
- 修改QTabWidget中的选项卡,其中每个选项卡代表一个QTableView
- 在QTableView中用作编辑器的QComboBox中刷新选项