问题描述
我的pyside2窗口应用程序中有一组三个qradiobutton和三个qgroupboxes。 当我单击一个单选按钮时,将启用一个组框。
if self.ui.radioButton_1.isChecked():
self.ui.groupBox_1.setEnabled(True)
self.ui.groupBox_2.setEnabled(False)
self.ui.groupBox_3.setEnabled(False)
elif self.ui.radioButton_2.isChecked():
self.ui.groupBox_1.setEnabled(False)
self.ui.groupBox_2.setEnabled(True)
self.ui.groupBox_3.setEnabled(False)
elif self.ui.radioButton_3.isChecked():
self.ui.groupBox_1.setEnabled(False)
self.ui.groupBox_2.setEnabled(False)
self.ui.groupBox_3.setEnabled(True)
是否可以通过实现样式或在Qt Designer中启用某些选项来使选定的qgroupbox的边框在激活时着色?像这样:
绿线的确切宽度并不重要,只有彩色边框变亮才重要。
解决方法
您可以在QGroupBox的样式表中使用:enabled
伪状态设置边框。
import sys
from PySide2.QtWidgets import *
class Template(QWidget):
def __init__(self):
super().__init__()
grid = QGridLayout(self)
for i in range(3):
radio_btn = QRadioButton(f'RadioButton_{i + 1}',checked=not i)
group_box = QGroupBox(f'GroupBox_{i + 1}',enabled=not i)
radio_btn.toggled[bool].connect(group_box.setEnabled)
hbox = QHBoxLayout(group_box)
hbox.addWidget(QLabel(f'Test_{i + 1}'))
hbox.addWidget(QLineEdit())
grid.addWidget(radio_btn,i,0)
grid.addWidget(group_box,1)
self.setStyleSheet('''
QGroupBox {
margin-top: 1ex;
}
QGroupBox:enabled {
border: 3px solid green;
}
QGroupBox::title {
subcontrol-origin: margin;
left: 1ex;
}''')
if __name__ == '__main__':
app = QApplication(sys.argv)
window = Template()
window.show()
sys.exit(app.exec_())