我对Qt完全不熟悉,所以我很高兴有一个广泛的答案。
我在这里制定了一些模型:
我们有一种包含以下内容的表:
我们还有2个按钮可以添加和删除表格中的项目。
我做了一些谷歌搜索,发现它可以通过QTableView完成。 有没有办法将这种复杂的结构放入细胞中?它必须是从QTableView继承的独立类吗?
答案 0 :(得分:2)
我在Qt中看到至少有三个选项可以实现:
QtableView
或QTableWidget
并在其中插入一些自定义控件。查看其他人发表的评论QGridLayout
并按行和列填充控件QWidget
创建自己的QHBoxLayout
来存储和管理线元素(旋转框,编辑字段,单选按钮)。您可以在QtCreator中设计它,它可以拥有它自己的.ui。这可以轻松处理每行QWidget
之间的交互(由QWidget
类直接处理)。稍后,您可以在QVBoxLayout
。Personnaly,我会选择最后一个选项,但如果每行的控件具有不同的内容/大小(请参阅注释),它可能无法巧妙地工作,那么首选选项应该是首选。
答案 1 :(得分:2)
如果您要在表格中包含多达一百个或几百个元素,请使用QTableWidget
。
如果您要包含太多元素(大约数千个),请转到QTableView,然后了解model-view programming。
我推荐QTableWidget
的原因是因为您是初学者。您只需要创建一个小部件,然后使用setCellWidget()
即可完成。
如果您有数千行,那么您将不得不使用QStyledItemDelegate
自行绘制小部件,这将在QTableView
内绘制小部件。这是一件非常痛苦的事情,但是没有办法解决它。您可以找到here的原因。
答案 2 :(得分:0)