首页 > 解决方案 > Qt5 QListView 在水平行而不是垂直列表中设置项目

问题描述

我正在设置QListView一个自定义QStyledItemDelegate项,我希望我的项目呈现在水平“行”中。

假设我们QListView的模型是“A”、“B”和“C”,标准视图会将它们设为:

----------------------------------------------------------------------------------
|X[ A                                                                          ]X|
| [ B                                                                          ] |
| [ C                                                                          ] |
----------------------------------------------------------------------------------

每个项目占据整个宽度。我想要做的是拥有A BC处于水平方向,即使模型中的每一个都位于单独的行中(并且在整个视图中只有一列)。

X[ A ]X [ B ] [ C ]

X==所选项目背景)

我不能使用 a 的原因QTableView是因为我会让物品变大和变小,因此当它们太宽而不能放在一条线上时需要包装;不断更改表格中的列、行和单元格大小似乎比此工作所需的工作更多,而且我不希望视图中有表格边框。

到目前为止,我已经尝试过覆盖sizeHintpaint方法。我认为我不需要编辑器方法,因为这些项目没有编辑模式可以进入。

任何基本的例子对我来说都足够了。如果您在 PyQt5 中写下您的答案并且它可以帮助我找到我的答案,即使我使用的是 C++,我也会将其标记为正确答案。

标签: c++qtqt5qlistviewqstyleditemdelegate

解决方案


您可以使用 setFlow 将流属性从“TopToBottom”更改为“LeftToRight”,如下所示:

listView->setFlow(QListView::Flow::LeftToRight);

推荐阅读