使用QButtonGroup里面嵌套4个QRadioButton按钮,使用QLayout,并且每个按钮有选中样式和未选中样式,当按钮选中后,使用QStackWidget实现不同的右侧信息的展示
时间: 2024-03-02 19:48:11 浏览: 130
好的,这是一个很好的问题。我将为您提供一些指导。
首先,您需要创建一个QButtonGroup对象,并将QRadioButton按钮添加到其中。这可以通过以下代码完成:
```python
button_group = QButtonGroup()
button_group.setExclusive(True)
radio_button_1 = QRadioButton("Button 1")
button_group.addButton(radio_button_1)
radio_button_2 = QRadioButton("Button 2")
button_group.addButton(radio_button_2)
radio_button_3 = QRadioButton("Button 3")
button_group.addButton(radio_button_3)
radio_button_4 = QRadioButton("Button 4")
button_group.addButton(radio_button_4)
```
接下来,您需要使用QLayout将这些按钮放置在一起。这可以通过以下代码完成:
```python
layout = QVBoxLayout()
layout.addWidget(radio_button_1)
layout.addWidget(radio_button_2)
layout.addWidget(radio_button_3)
layout.addWidget(radio_button_4)
widget = QWidget()
widget.setLayout(layout)
```
现在,您需要为每个按钮创建选中和未选中的样式。您可以使用QSS(Qt样式表)来完成这项任务。以下是一个示例:
```python
button_style = '''
QRadioButton::indicator:checked {
image: url("path/to/checked/image.png");
}
QRadioButton::indicator:unchecked {
image: url("path/to/unchecked/image.png");
}
'''
radio_button_1.setStyleSheet(button_style)
radio_button_2.setStyleSheet(button_style)
radio_button_3.setStyleSheet(button_style)
radio_button_4.setStyleSheet(button_style)
```
最后,您需要使用QStackWidget来实现不同的右侧信息的展示。这可以通过以下代码完成:
```python
stack_widget = QStackedWidget()
page_1 = QWidget()
layout_1 = QVBoxLayout()
# Add widgets to layout_1
page_1.setLayout(layout_1)
stack_widget.addWidget(page_1)
page_2 = QWidget()
layout_2 = QVBoxLayout()
# Add widgets to layout_2
page_2.setLayout(layout_2)
stack_widget.addWidget(page_2)
page_3 = QWidget()
layout_3 = QVBoxLayout()
# Add widgets to layout_3
page_3.setLayout(layout_3)
stack_widget.addWidget(page_3)
page_4 = QWidget()
layout_4 = QVBoxLayout()
# Add widgets to layout_4
page_4.setLayout(layout_4)
stack_widget.addWidget(page_4)
button_group.buttonClicked[int].connect(stack_widget.setCurrentIndex)
main_layout = QHBoxLayout()
main_layout.addWidget(widget)
main_layout.addWidget(stack_widget)
main_widget = QWidget()
main_widget.setLayout(main_layout)
```
这样,当用户单击任何一个QRadioButton按钮时,QStackedWidget将显示相应的页面。
希望这些指导可以帮助您解决问题!
阅读全文
相关推荐


















