QCheckBox(复选框)和QRadioButton(单选框)都是选项按钮。这是因为它们都可以在开(选中)或者关(未选中)之间切换。区别是对用户选择的限制:单选框定义了“多选一”的选择,而复选框提供的是“多选多”的选择。
尽管在技术上可以通过复选框来实现单选框的行为,反之亦然,但还是强烈建议使用众所周知的约定。
一、QRadioButton
QRadioButton部件提供了一个带有文本标签的单选框(单选按钮)。
单选框默认开启自动互斥(autoExclusive)。如果启用了自动互斥,属于同一个父部件的单选框的行为就和属于一个互斥按钮组的一样。如果你需要为属于同一父部件的单选框设置多个互斥按钮组,把它们加入QButtonGroup中,并通过调用QButtonGroup的setExclusive(true)来设置按钮组中的单选框互斥。
二、QCheckBox
QCheckBox继承自QAbstractButton,它提供了一个带文本标签的复选框。
只要复选框被选中或者清除,都会发射一个stateChanged()信号。如果想在复选框状态改变的时候触发一个行为,请连接这个信号,可以使用 isChecked()来查询复选框是否被选中。
除了常用的选中和未选中两个状态,QCheckBox还可选地提供了第三种状态(半选)来表明“没有变化”。当需要给用户一个选中或者未选中复选框的选择时,这是很有用的。如果需要第三种状态,可以通过setTristate()来使它生效,并使用checkState()来查询当前的切换状态。
重要的继承函数:text()、setText()、pixmap()、setPixmap()、accel()、setAccel()、isToggleButton()、setDown()、isDown()、isOn()、checkState()、 autoRepeat()、isExclusiveToggle()、group()、setAutoRepeat()、toggle()、pressed()、released()、clicked()、toggled()、checkState()、stateChanged()。
共有函数
Qt::CheckState checkState() const
返回复选框的选中状态。如果不需要三态的支持,可以使用QAbstractButton::isChecked(),它返回一个布尔值。
bool isTristate() const
复选框是否为一个三态复选框。
默认的是false,也就是说复选框只有两个状态。
void setCheckState(Qt::CheckState state)
设置复选框的选中状态。如果不需要三态的支持,可以使用QAbstractButton:setChecked(),它接受一个布尔值。
void setTristate(bool y = true)
设置复选框为一个三态复选框。
信号
void stateChanged(int state)
当复选框状态发生改变,这个信号就会被发射。即:用户选中或者取消选中。
本文详细解析了QCheckBox(复选框)和QRadioButton(单选框)的区别与应用,阐述了它们在Qt界面设计中的角色,包括如何设置互斥、三态状态及响应状态改变。
443

被折叠的 条评论
为什么被折叠?



