对于我的项目,我有一个表格结构,用户可以在其中向每个单元格添加不同的元素。这可以是文本编辑器、音频播放器或图片。所以单元格中的内容非常灵活。用户可以与小部件交互并根据它们的功能进行编辑。
这是一个非常简单的草图:
编辑: 我搞砸了草图。这些应该是 3 列。
现在我正在纠结哪种方法最好:
我发现了三种方法。
使用
QTableWidget
或 QTableView
并使用 setCellWidget
/ setIndexWidget
为每个单元格设置一个带有 QVBoxLayout
的空小部件,以便用户可以将小部件添加到布局中。我知道这种方法是非常不鼓励的,因为太多的小部件可能会出现性能问题,但也许我可以限制单元格中的行数、列数和小部件数。无论如何,据说下一种方法更好。
使用
QStyledItemDelegate
并在项目委托中绘制“小部件”。我从来没有这样做过,所以我必须学习如何做,而且我在 Qt 的 MVC 框架方面没有任何经验。我在 Internet 上看到的示例使用一个静态结构作为单元格,但我想知道如何制作一个灵活的结构,就像我之前描述的项目委托一样。小部件本身并不那么复杂。
使用
QGridLayout
但这基本上是从头开始构建自定义表格小部件,我想知道您是否会遇到与 1 中相同的性能问题。
那么你认为最好的方法是什么?或者还有更好的吗?