使用Qt

时间:2017-09-01 11:46:33

标签: qt user-interface layout

我对Qt完全不熟悉,所以我很高兴有一个广泛的答案。

我在这里制定了一些模型:

enter image description here

我们有一种包含以下内容的表:

  • 带有旋转框的整数值。
  • 具有三个(非特定)分组单选按钮的单元格
  • 编辑框
  • 与此特定编辑框交互的按钮。

我们还有2个按钮可以添加和删除表格中的项目。

我做了一些谷歌搜索,发现它可以通过QTableView完成。 有没有办法将这种复杂的结构放入细胞中?它必须是从QTableView继承的独立类吗?

3 个答案:

答案 0 :(得分:2)

我在Qt中看到至少有三个选项可以实现:

  • 使用QtableViewQTableWidget并在其中插入一些自定义控件。查看其他人发表的评论
  • 使用QGridLayout并按行和列填充控件
  • 使用QWidget创建自己的QHBoxLayout来存储和管理线元素(旋转框,编辑字段,单选按钮)。您可以在QtCreator中设计它,它可以拥有它自己的.ui。这可以轻松处理每行QWidget之间的交互(由QWidget类直接处理)。稍后,您可以在QVBoxLayout
  • 中为您需要的每一行添加一个实例

Personnaly,我会选择最后一个选项,但如果每行的控件具有不同的内容/大小(请参阅注释),它可能无法巧妙地工作,那么首选选项应该是首选。

答案 1 :(得分:2)

如果您要在表格中包含多达一百个或几百个元素,请使用QTableWidget

如果您要包含太多元素(大约数千个),请转到QTableView,然后了解model-view programming

我推荐QTableWidget的原因是因为您是初学者。您只需要创建一个小部件,然后使用setCellWidget()即可完成。

如果您有数千行,那么您将不得不使用QStyledItemDelegate自行绘制小部件,这将在QTableView内绘制小部件。这是一件非常痛苦的事情,但是没有办法解决它。您可以找到here的原因。

答案 2 :(得分:0)

您正在寻找的是正确的布局来安排这些组件。

请参阅Layout Management

查看examples

您可以根据自己的情况,使用QGridLayoutQFormLayout和其他您认为合适的其他组合来实现所需的布局。