11

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

QVBoxLayout在主布局的第二个窗格(QHBoxLayout)上有一个。这QVBoxLayout有一个QScrollArea添加到它addWidget

QScrollArea是一个QWidget名为“scrollContents”的父级,后者又包含一个QGridLayout.

我正在向其中添加一个自定义创建的小部件,QGridLayout它具有固定的高度。我们100px现在可以考虑一下。

如果这QGridLayout有项目,其总高度小于表单本身,它将这些小部件垂直居中,它们之间的空间相同。

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

例如:[### 表示QScrollArea其中有 aQWidget区域 QGridLayout

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

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

我该如何解决这个问题?

谢谢你。

4

3 回答 3

16

QGridLayout::addWidget()alignment参数。以下代码适用于我:

gridLayout->addWidget(new QPushButton("Button"), 0, 0, Qt::AlignTop);
于 2012-12-25T21:11:35.877 回答
7

还有一种与 trollixx 回答的方法不同的方法:在QGridLayout. 请参阅此答案,其中还包含一个带有工具栏的示例

于 2012-12-25T21:18:39.570 回答
1

在底部使用垂直垫片,这就是它们的用途。

于 2018-07-17T16:48:38.473 回答