使 QListWidget 调整其项目的大小以填充空间

Posted

技术标签:

【中文标题】使 QListWidget 调整其项目的大小以填充空间【英文标题】:Making QListWidget resize its items to fill space 【发布时间】:2011-10-16 17:56:41 【问题描述】:

我有一个 QListWidget 和一个自定义小部件类,我正在为列表小部件中出现的每个项目创建一个实例。

但我不知道如何使我的自定义小部件展开以填充列表小部件中每一行的所有可用空间。

我的自定义小部件是在 Qt Designer 中创建的,并且我已将其大小提示设置为水平扩展,但是当放置在我的列表小部件中时它不会这样做(即在设计器中,小部件设置为, 200px 宽。列表小部件实际上是 400px 宽,但是我在每一行中的自定义小部件并没有扩展以填充这个空间...)

我该如何进行这项工作?

谢谢。

【问题讨论】:

【参考方案1】:

我假设您使用 QListWidget::setItemWidget() 将项目放在这里?

如果是这种情况,那么您通常需要将 QListWidgetItem 的 sizeHint() 设置为自定义小部件的 sizeHint():

myListWidget->setItemWidget( myListWidgetItem, customWidget );
myListWidgetItem->setSizeHint( customWidget->sizeHint() );

【讨论】:

是的,这就是我正在做的事情。但是,当我将listWidgetItem 的 sizeHint 设置为自定义小部件的 sizeHint 时,我最终没有行(我假设它被设置为 0、0 或其他值)。我可能已经为我的自定义小部件设置了不正确的 sizeHint...不过,策略设置为扩展...有什么想法吗? 嗯。通常,默认大小策略(我认为这是首选/首选)对于您在设计器中的***小部件来说已经足够了。在不深入研究 UI 文件和实施的情况下,我不是问题所在。 你找出问题所在了吗?【参考方案2】:

作为一个更新,从 Qt 5.2 开始。你可以设置QListWidgetsizeAdjustPolicy

listWidget-setSizeAdjustPolicy(QListWidget::AdjustToContents);

这将在每次向 QListWidget 添加新项目(其宽度超过当前宽度)时调整其大小。

参考:http://doc.qt.io/qt-5/qabstractscrollarea.html#sizeAdjustPolicy-prop

【讨论】:

以上是关于使 QListWidget 调整其项目的大小以填充空间的主要内容,如果未能解决你的问题,请参考以下文章

如何使 SplitContainers 中的 ListBoxes 正确调整大小?

QListWidget 不会自行调整大小

如何使 UITableView 不改变 imageView 的框架,或调整图像大小以填充框架大小?

移动端适配

调整 QTreeWidget 内的小部件大小(使用 setItemWidget 设置)?

如何使文本框扩展以填充网格单元的剩余空间?