我的表单上有一个QHBoxLayout,其中添加了3种布局。第二个有关于我的问题的项目。

我在主布局的第二个 Pane 中有一个QVBoxLayout(QHBoxLayout)。
QVBoxLayout中已添加了QScrollAreaaddWidget

QScrollArea是名为“scrollContents”的QWidget的父项,而QGridLayout又包含QGridLayout

我正在为此高度固定的100px添加一个自定义创建的小部件。我们现在可以考虑这个QGridLayout

如果此QScrollArea具有总高度小于表单本身的项目,则它将这些小部件垂直居中,并且它们之间的间距相同。

如果只有一个小部件,它将显示在中间。但是我希望它们从上到下列出。

例如:[###代表QWidget的区域,其中存在一个QGridLayout,其中 ojit_code。

   OK      ->   DESIRED    -> NOT DESIRED AND WHAT HAPPENS
##########    ##########               ##########
# |item| #    # |item| #               #        #
# |item| #    #        #               #        #
# |item| #    #        #               #        #
# |item| #    #        #               # |item| #
# |item| #    #        #               #        #
# |item| #    #        #               #        #
# |item| #    #        #               #        #
##########    ##########               ##########
  |item|
  |item|
  |item|

基本上:如果有9个“行”的空间,则当添加单个项目时,它将出现在中间的第5个位置。如果有9个或更多,它们将按应有的方式显示。如果小于等于8,则它们之间的空间将扩大以将它们全部居中。

我该如何解决?

谢谢你。

最佳答案

还有一种与trollixx回答不同的方法:在QGridLayout的“底部”添加一个虚拟控件,将其垂直大小策略设置为可扩展。参见this answer, which also contains an example with a toolbar

关于c++ - Qt QGridLayout自动将项目居中(移动)到中间。,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14033902/

10-10 03:48