在Qt中,当我将小部件添加到我的布局时,默认情况下它们是垂直居中的。有没有办法从上到下“列出”小部件,而不是垂直居中?QVBoxLayout:如何垂直对齐顶部而不是中心的小部件
回答
使用void QLayout::setAlignment (Qt::Alignment alignment)
方法根据您的选择设置对齐方式。
我觉得这比使用layout.setAlignment()
稍微复杂一些。直到现在,我一直在为我工作,当我发现如果你扩展了你设置的最大高度的小部件,那么这个小部件将不会按照你想要的方式排列。
下面是代码示例不是顶部对齐QTextBrowser()
小部件,即使我打电话layout.setAlignment(Qt.AlignTop)
。对不起,它是在Python中,但它很容易转换为C++(我已经多次走了另一条路)。
from PyQt4.QtCore import *
from PyQt4.QtGui import *
class MyWidget(QWidget):
"""
Create a widget that aligns its contents to the top.
"""
def __init__(self, parent=None):
QWidget.__init__(self, parent)
layout = QVBoxLayout()
label = QLabel('label:')
layout.addWidget(label)
info = QTextBrowser(self)
info.setMinimumHeight(100)
info.setMaximumHeight(200)
layout.addWidget(info)
# Uncomment the next line to get this to align top.
# layout.setAlignment(info, Qt.AlignTop)
# Create a progress bar layout.
button = QPushButton('Button 1')
layout.addWidget(button)
# This will align all the widgets to the top except
# for the QTextBrowser() since it has a maximum size set.
layout.setAlignment(Qt.AlignTop)
self.setLayout(layout)
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
widget = MyWidget()
widget.show()
widget.resize(QSize(900, 400))
app.exec_()
以下显式调用layout.setAlignment(info, Qt.AlignTop)
以使扩展文本小部件工作。
from PyQt4.QtCore import *
from PyQt4.QtGui import *
class MyWidget(QWidget):
"""
Create a widget that aligns its contents to the top.
"""
def __init__(self, parent=None):
QWidget.__init__(self, parent)
layout = QVBoxLayout()
label = QLabel('label:')
layout.addWidget(label)
info = QTextBrowser(self)
info.setMinimumHeight(100)
info.setMaximumHeight(200)
layout.addWidget(info)
# Uncomment the next line to get this to align top.
layout.setAlignment(info, Qt.AlignTop)
# Create a progress bar layout.
button = QPushButton('Button 1')
layout.addWidget(button)
# This will align all the widgets to the top except
# for the QTextBrowser() since it has a maximum size set.
layout.setAlignment(Qt.AlignTop)
self.setLayout(layout)
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
widget = MyWidget()
widget.show()
widget.resize(QSize(900, 400))
app.exec_()
两个解决方案比较后,似乎:
myLayout.setAlignment(Qt.AlignTop)
作品数部件alignement但:
myLayout.setAlignment(myWidget, Qt.AlignTop)
仅适用于第一控件添加到布局。 毕竟,解决方案也依赖于你的widget的QSizePolicy。
如果你有一个QVBoxLayout
,并希望自己的固定大小的小部件在顶部堆叠,你可以简单地追加一个垂直拉伸添加结束:
layout.addStretch()
如果您有多个担架或其它拉伸物品,您可以指定一个整数伸展因子参数来定义它们的大小比例。请参阅addStretch和addSpacerItem。
不确定这是否回答您的原始问题,但它是我在Google上搜索并引导到此页面时所回答的问题的答案 - 因此它可能对其他人有用。
有没有办法给帖子添加500个大拇指? – Acidic 2018-02-08 04:40:30
- 1. 如何使垂直CCScrollView对齐顶部?
- 2. 垂直对齐顶部的CSS
- 3. 如何在Chrome中将图像垂直对齐到顶部?
- 4. 顶部图像中心垂直图像
- 5. 如何对齐垂直等于顶部的文本CSS
- 6. 如何垂直顶部对齐div内的div?
- 7. 垂直对齐到父div的顶部和底部
- 8. UIScrollView垂直平铺对齐视图的顶部或底部
- 9. 对齐两个标签的底部和顶部在垂直UIStackView
- 10. 垂直对齐特定的边界顶部和底部
- 11. 事业部垂直对齐
- 12. 垂直对齐内部表
- 13. 垂直对齐小部件内部行(页面生成器)
- 14. 顶部垂直xtick标签,而不是底部
- 15. PhotoSwipe - 在放大时如何对齐图像垂直顶部?
- 16. npoi垂直对齐中心
- 17. 中心垂直对齐
- 18. 垂直居中的元素和开关如果高度太小,对齐顶部
- 19. 如何在中心对齐垂直div?
- 20. 不同高度的顶部/底部边距的垂直对齐元素
- 21. 如何从中心,而不是顶部/底部/边,使用css
- 22. 垂直对齐不同大小的文本的底部divs
- 23. 引导文本对齐顶部中心
- 24. 将StackPanel对齐到Canvas顶部中心
- 25. CSS在底部和中心对齐垂直
- 26. 将扩展器按钮垂直对齐到DataGridRowHeader的顶部
- 27. 使用poi的单元格垂直顶部对齐方式
- 28. 垂直对齐WPF文本块的顶部
- 29. 对齐一个盒子,在底部而不是顶部
- 30. 垂直对齐:底部的子div
这也解决了我的问题。我不确定*为什么*需要设置最小宽度/高度。你可能会解释一下吗? – Seth 2015-05-07 04:08:54