QBoxLayout.

Classe QBoxLayout – PySide6

por

em

O QBoxLayout é uma classe no framework Qt (usado para desenvolver interfaces gráficas de usuário, ou GUIs) que fornece um layout para organizar widgets em uma linha (horizontalmente) ou em uma coluna (verticalmente).

Ele é derivado de QLayout, a classe base para todos os layouts no Qt.

Existem duas subclasses principais de QBoxLayout:

  1. QHBoxLayout: Organiza os widgets em uma linha horizontal.
  2. QVBoxLayout: Organiza os widgets em uma coluna vertical.

Esses layouts são úteis quando você deseja distribuir widgets de maneira uniforme ao longo de uma linha ou coluna.

Eles permitem que você adicione widgets, defina espaçamentos e margens, e controlem como os widgets são redimensionados e reposicionados quando a janela é redimensionada.

Exemplo básico de uso com o binding PySide6:

# -*- coding: utf-8 -*-
"""."""

import sys

from PySide6 import QtCore, QtWidgets


class MainWindow(QtWidgets.QMainWindow):
    def __init__(self, parent=None, **kwargs):
        super().__init__(parent=parent)
        self.application = kwargs.get('application')

        window_size = QtCore.QSize(960, 540)
        self.resize(window_size)
        self.setMinimumSize(window_size)
        self.setWindowTitle(self.tr('Python - PySide6 - Qt'))

        vbox = QtWidgets.QVBoxLayout()

        central_widget = QtWidgets.QWidget()
        central_widget.setLayout(vbox)
        self.setCentralWidget(central_widget)

        box = QtWidgets.QBoxLayout(QtWidgets.QBoxLayout.Direction.LeftToRight)
        vbox.addLayout(box)

        for i in range(1, 5):
            box.addWidget(QtWidgets.QPushButton(f'Buttom {i}'))


def main() -> None:
    APPLICATION_NAME = 'br.com.justcode.Qt'
    ORGANIZATION_NAME = APPLICATION_NAME.split('.')[2]
    ORGANIZATION_DOMAIN = '.'.join(APPLICATION_NAME.split('.')[0:3])

    application = QtWidgets.QApplication(sys.argv)
    application.setApplicationDisplayName(APPLICATION_NAME)
    application.setApplicationName(APPLICATION_NAME)
    application.setDesktopFileName(APPLICATION_NAME)
    application.setOrganizationName(ORGANIZATION_NAME)
    application.setOrganizationDomain(ORGANIZATION_DOMAIN)

    if QtCore.QSysInfo.productType() == 'windows':
        from ctypes import windll

        windll.shell32.SetCurrentProcessExplicitAppUserModelID(
            APPLICATION_NAME,
        )

    window = MainWindow(application=application)
    window.show()

    sys.exit(application.exec())


if __name__ == '__main__':
    main()

Neste exemplo, os botões são organizados horizontalmente (da esquerda para a direita) dentro de uma janela usando:

QBoxLayout.
QBoxLayout.