为 QFrame 中的小部件设置相同的边距
Setting same margin for widgets in QFrame
我在 QFrame 中有两个小部件 class。第一个小部件是 QTabWidget,下一个是按钮。我试图为按钮设置上边距。我试图通过将 Qpushbutton 的 margin-top 设置为负值来更新它,但它没有用。我试图将顶部的按钮对齐,与标签栏的高度相同
.
class TableTreeItemChild(QFrame):
"""Component for showing child widget of tree item"""
def __init__(self, dbData, urlDBIndex):
super(TableTreeItemChild, self).__init__()
self.urlDBIndex = urlDBIndex
self.tableTreeTab = TableTreeTab(dbData)
self.setupUI()
def setupUI(self):
"""Setting up the component"""
mainLayout = QHBoxLayout()
mainLayout.setContentsMargins(0, 0, 0, 0)
mainLayout.addWidget(self.tableTreeTab)
exportButton = QPushButton("")
exportButton.setIcon(QIcon("assets/icons/export_icon_16.png"))
exportButton.setStyleSheet("QPushButton{border: 1px solid #e1e1e1; padding:5px; border-radius:4px; } ")
exportButton.setGeometry(0, -100, 10, 10)
exportButton.clicked.connect(self.onExportButtonClick)
mainLayout.addWidget(exportButton)
self.setFixedWidth(800)
self.setLayout(mainLayout)
以上代码的当前输出为:
当前输出:
为了在布局中将小部件对齐到顶部,必须提供 alignment
参数。
请记住 addWidget()
具有三个参数(强制性小部件、stretch 和对齐方式),因此如果您未指定拉伸,则必须对对齐方式进行关键字处理:
mainLayout.addWidget(exportButton, alignment=QtCore.Qt.AlignTop)
三个注意事项:
- 在添加到布局的小部件上设置几何图形是没有用的,因为布局会根据情况自动更改小部件的几何图形;
- Qt 中的样式表不如“web”先进CSS:它们仅适用于小部件属性,并且它们不是(也不应该)允许控制定位、调整大小或对齐;
- 虽然对齐会将您的小部件置于顶部,但无法保证它与其他小部件完全对齐,这是由于 Qt 绘制的方式所致元素:可以有一些变通办法,但它们并非在所有情况下都是 100% 安全的;如上所述,Qt 样式表仅覆盖单个小部件的外观,不涉及正常的布局 CSS,因为布局管理器(QLayout 子类)对此负责并且它们不支持样式表;
我在 QFrame 中有两个小部件 class。第一个小部件是 QTabWidget,下一个是按钮。我试图为按钮设置上边距。我试图通过将 Qpushbutton 的 margin-top 设置为负值来更新它,但它没有用。我试图将顶部的按钮对齐,与标签栏的高度相同
class TableTreeItemChild(QFrame):
"""Component for showing child widget of tree item"""
def __init__(self, dbData, urlDBIndex):
super(TableTreeItemChild, self).__init__()
self.urlDBIndex = urlDBIndex
self.tableTreeTab = TableTreeTab(dbData)
self.setupUI()
def setupUI(self):
"""Setting up the component"""
mainLayout = QHBoxLayout()
mainLayout.setContentsMargins(0, 0, 0, 0)
mainLayout.addWidget(self.tableTreeTab)
exportButton = QPushButton("")
exportButton.setIcon(QIcon("assets/icons/export_icon_16.png"))
exportButton.setStyleSheet("QPushButton{border: 1px solid #e1e1e1; padding:5px; border-radius:4px; } ")
exportButton.setGeometry(0, -100, 10, 10)
exportButton.clicked.connect(self.onExportButtonClick)
mainLayout.addWidget(exportButton)
self.setFixedWidth(800)
self.setLayout(mainLayout)
以上代码的当前输出为:
当前输出:
为了在布局中将小部件对齐到顶部,必须提供 alignment
参数。
请记住 addWidget()
具有三个参数(强制性小部件、stretch 和对齐方式),因此如果您未指定拉伸,则必须对对齐方式进行关键字处理:
mainLayout.addWidget(exportButton, alignment=QtCore.Qt.AlignTop)
三个注意事项:
- 在添加到布局的小部件上设置几何图形是没有用的,因为布局会根据情况自动更改小部件的几何图形;
- Qt 中的样式表不如“web”先进CSS:它们仅适用于小部件属性,并且它们不是(也不应该)允许控制定位、调整大小或对齐;
- 虽然对齐会将您的小部件置于顶部,但无法保证它与其他小部件完全对齐,这是由于 Qt 绘制的方式所致元素:可以有一些变通办法,但它们并非在所有情况下都是 100% 安全的;如上所述,Qt 样式表仅覆盖单个小部件的外观,不涉及正常的布局 CSS,因为布局管理器(QLayout 子类)对此负责并且它们不支持样式表;