qt.go 1.17 QCheckBox 和 QRadioButton

#QCheckBox 和 QRadioButton

QCheckBox

QCheckBox 提供了一个带文本标签的复选框.
QCheck 和QRadioBUtton(单选框),都是属于选项按钮,在开和关之间切换.
单选框定义了多选一,复选框提供的是多选多.

复选框被选中或者清除,都会发射stateChanged()信号, isChecked()来查询复选框是否被选中.

Qt::CheckState checkState() const 
返回复选框的选中状态。如果不需要三态的支持,可以使用QAbstractButton::isChecked(),它返回一个布尔值。

bool isTristate() const 
复选框是否为一个三态复选框.

默认的是false,也就是说复选框只有两个状态。

void setCheckState(Qt::CheckState state) 
设置复选框的选中状态。如果不需要三态的支持,可以使用QAbstractButton:setChecked(),它接受一个布尔值。

void setTristate(bool y = true) 
设置复选框为一个三态复选框.
qCheckbox := qtwidgets.NewQCheckBox(mw.Form)
qCheckbox.SetText("三态复选框")
qCheckbox.SetTristate(true) // 开启三态模型

qCheckbox.SetCheckState(qtcore.Qt__PartiallyChecked)
qCheckbox.Move(50, 50)
label := qtwidgets.NewQLabel(mw.Form, 0)
label.Move(50, 80)
label.SetFixedSize1(100, 30)
label.SetText("Click CheckBox...")
if qCheckbox.IsTristate() {
	fmt.Println("是三态状态")
}

// 信号槽相应
qtrt.Connect(qCheckbox, "stateChanged(int)", func(iVal int) {
	if iVal == qtcore.Qt__Checked {
		label.SetText("选中了")
	} else if iVal == qtcore.Qt__PartiallyChecked {
		label.SetText("半选")
	} else {
		label.SetText("Unchecked")
	}
})

在这里插入图片描述

QRadioButton

QRadioButton部件提供了一个带有文本标签的单选框(单选按钮)

单选框默认开启自动互斥(autoExclusive).如果启用了自动互斥,属于同一个父部件的单选框的行为就和属于一个互斥按钮组的一样.如果你需要为属于同一父部件的单选框设置多个互斥按钮组,把它们加入QButtonGroup中.

每当一个按钮切换选中或未选中状态时,会发出的toggled()信号.如果希望每个按钮切换状态时触发一个动作,连接到这个信号.使用isChecked()来查看特定按钮是否被选中.

m_pHBoxLayout := qtwidgets.NewQHBoxLayout1(mw.Form)
m_pButtonGroup := qtwidgets.NewQButtonGroup(mw.Form)

m_pButtonGroup.SetExclusive(true)
for i := 0; i < 5; i++ {
	m_pRadioBtn := qtwidgets.NewQRadioButton(mw.Form)
	str := fmt.Sprintf("%s %d", "切换", i)

	m_pRadioBtn.SetText(str)
	m_pHBoxLayout.AddWidgetp(m_pRadioBtn)
	// m_pButtonGroup.AddButtonp(m_pRadioBtn)// 默认id从-2 -3开始
	m_pButtonGroup.AddButton(m_pRadioBtn, i)
}
m_pHBoxLayout.SetSpacing(10)
m_pHBoxLayout.SetContentsMargins(10, 10, 10, 10)
mw.Form.SetLayout(m_pHBoxLayout)
// 信号槽相应
qtrt.Connect(m_pButtonGroup, "buttonClicked(int)", func(iVal int) {
	str := fmt.Sprintf("%s %d", "切换", iVal)
	fmt.Println(str)
})

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值