QButtonGroup.

Classe QButtonGroup – PySide6

por

em

O QButtonGroup é uma classe do framework Qt usada para gerenciar um grupo de botões, permitindo que você trate vários botões como uma única entidade lógica.

Ele não é um widget em si, mas uma maneira de agrupar botões como QPushButton, QRadioButton, QCheckBox e similares.

Isso é especialmente útil quando você deseja que apenas um botão do grupo possa ser selecionado de cada vez (como em um grupo de botões de rádio), ou quando você precisa gerenciar o comportamento e a interação de múltiplos botões juntos.

Principais funcionalidades da classe QButtonGroup:

  1. Agrupamento de Botões: Você pode adicionar vários botões ao grupo usando o método addButton(). Cada botão pode ser associado a um ID exclusivo, o que facilita identificar qual botão foi pressionado.
  2. Exclusividade: Ao configurar o grupo como exclusivo (setExclusive(true)), apenas um botão dentro do grupo pode estar selecionado por vez. Isso é útil, por exemplo, ao trabalhar com botões de rádio (QRadioButton), onde apenas uma opção pode ser selecionada.
  3. Sinais e Slots: O QButtonGroup emite sinais como buttonClicked(int id) e buttonPressed(int id), que permitem conectar slots que reagem quando um botão específico do grupo é pressionado ou clicado.

Exemplo básico de uso em C++:

# -*- 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)

        button_group = QtWidgets.QButtonGroup(self)
        button_group.checkedId
        button_group.buttonClicked.connect(self.on_button_clicked)

        for i in range(1, 5):
            radio_button = QtWidgets.QRadioButton()
            radio_button.setText(f'Item {i}.')
            if i == 1:
                radio_button.setChecked(True)
            vbox.addWidget(radio_button)
            button_group.addButton(radio_button)

    def on_button_clicked(self, button):
        print(button.text())


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, botões de rádio são adicionados a um QButtonGroup.

Quando qualquer um desses botões é clicado, o texto do botão é impresso no console.

O QButtonGroup facilita o gerenciamento de grupos de botões e o tratamento de seus eventos de forma centralizada.

QButtonGroup.
QButtonGroup.