我的表单上有一个QHBoxLayout
,其中添加了3个布局。第二个问题涉及我的问题。
我在主要布局的第二个窗格(QVBoxLayout
)上有一个QHBoxLayout
。
这个QVBoxLayout
添加了QScrollArea
addWidget
。
此QScrollArea
是名为“scrollContents”的QWidget
的父级,后者又包含QGridLayout
。
我正在为具有固定高度的QGridLayout
添加自定义创建的窗口小部件。我们现在可以考虑这个100px
。
如果此QGridLayout
包含总高度小于表单本身的项目,则它们会垂直居中这些小部件,并在它们之间留出相同的空间。
如果有一个小部件,它就会出现在中间。但我希望它们从上到下列出。
例如:[###代表QScrollArea
的区域,其中QWidget
QGridLayout
。
OK -> DESIRED -> NOT DESIRED AND WHAT HAPPENS
########## ########## ##########
# |item| # # |item| # # #
# |item| # # # # #
# |item| # # # # #
# |item| # # # # |item| #
# |item| # # # # #
# |item| # # # # #
# |item| # # # # #
########## ########## ##########
|item|
|item|
|item|
基本上:如果有9个“行”的空间,当添加单个项目时,它会出现在第5个位置的中间位置。如果有9个或更多,它们就会出现。如果有8个或更少,则它们之间的空间被扩展以使它们全部居中。
我该如何解决这个问题?
谢谢。
答案 0 :(得分:12)
QGridLayout::addWidget()有alignment
参数。以下代码适用于我:
gridLayout->addWidget(new QPushButton("Button"), 0, 0, Qt::AlignTop);
答案 1 :(得分:5)
还有一种方法与trollixx回答的方法不同:在QGridLayout
的“底部”添加一个虚拟小部件,其垂直大小策略设置为扩展。请参阅this answer, which also contains an example with a toolbar。
答案 2 :(得分:0)
在底部使用垂直垫片,这就是它们的作用。