Qt—QCheckBox使⽤总结
“转载⾃[⼀去、⼆三⾥]的
简述
QCheckBox 继承⾃ QAbstractButton,它提供了⼀个带⽂本标签的复选框。
QCheckBox(复选框)和QRadioButton(单选框)都是选项按钮。这是因为它们都可以在开(选中)或者关(未选中)之间切换。区别是对⽤户选择的限制:单选框定义了 “多选⼀” 的选择,⽽复选框提供的是 “多选多” 的选择。
尽管在技术上可以通过复选框来实现单选框的⾏为,反之亦然,但还是强烈建议使⽤众所周知的约定。
详细描述
只要复选框被选中或者清除,都会发射⼀个 stateChanged() 信号。如果想在复选框状态改变的时候触发⼀个⾏为,请连接这个信号,可以使⽤ isChecked() 来查询复选框是否被选中。
除了常⽤的选中和未选中两个状态,QCheckBox 还可选地提供了第三种状态(半选)来表明 “没有变化”。
当需要给⽤户⼀个选中或者未选中复选框的选择时,这是很有⽤的。如果需要第三种状态,可以通过 setTristate() 来使它⽣效,并使⽤ checkState() 来查询当前的切换状态。
和 QPushButton ⼀样,复选框可以显⽰⽂本或者图标。⽂本可以通过构造函数或者 setText() 来设置,图标可以通过 setIcon() 来设置。QCheckBox *checkbox = new QCheckBox("C&ase sensitive", this);
共有函数
Qt::CheckState checkState() const
checkbox和radiobutton的区别返回复选框的选中状态。如果不需要三态的⽀持,可以使⽤QAbstractButton::isChecked(),它返回⼀个布尔值。
bool isTristate() const
复选框是否为⼀个三态复选框。默认的是false,也就是说复选框只有两个状态。
void setCheckState(Qt::CheckState state)
设置复选框的选中状态。如果不需要三态的⽀持,可以使⽤QAbstractButton:setChecked(),它接受⼀个布尔值。
void setTristate(bool y = true)
设置复选框为⼀个三态复选框。
信号
void stateChanged(int state)
当复选框状态发⽣改变,这个信号就会被发射。即:⽤户选中或者取消选中。
⽰例
构造⼀个复选框 QCheckBox,然后使⽤ setTristate() 开启三态模式。
QCheckBox *pCheckBox = new QCheckBox(this);
m_pLabel = new QLabel(this);
m_pLabel->setText("");
pCheckBox->setText(QString::fromLocal8Bit("三态复选框"));
/
/ 开启三态模式
pCheckBox->setTristate();
// 连接信号槽
connect(pCheckBox, SIGNAL(stateChanged(int)), this, SLOT(onStateChanged(int)));
槽函数,判断当前复选框状态,其中包括:选中(Qt::Checked)、半选(Qt::PartiallyChecked)、未选中(Qt::Unchecked)。
void MainWindow::onStateChanged(int state)
{
if (state == Qt::Checked) // "选中"
{
m_pLabel->setText("Checked");
}
else if(state == Qt::PartiallyChecked) // "半选"
{
m_pLabel->setText("PartiallyChecked");
}
else // 未选中 - Qt::Unchecked
{
m_pLabel->setText("Unchecked");
}
}
QSS
复选框样式。
QCheckBox{
spacing: 5px;
color: white;
}
QCheckBox::indicator {
width: 17px;
height: 17px;
}
QCheckBox::indicator:enabled:unchecked {
image: url(:/Images/checkBox);
}
QCheckBox::indicator:enabled:unchecked:hover {
image: url(:/Images/checkBoxHover);
}
QCheckBox::indicator:enabled:unchecked:pressed {
image: url(:/Images/checkBoxPressed);
}
QCheckBox::indicator:enabled:checked {
image: url(:/Images/checkBoxChecked);
}
QCheckBox::indicator:enabled:checked:hover {
image: url(:/Images/checkBoxCheckedHover);
}
QCheckBox::indicator:enabled:checked:pressed {
image: url(:/Images/checkBoxCheckedPressed);
}
QCheckBox::indicator:enabled:indeterminate {
image: url(:/Images/checkBoxIndeterminate);
}
QCheckBox::indicator:enabled:indeterminate:hover {
image: url(:/Images/checkBoxIndeterminateHover); }
QCheckBox::indicator:enabled:indeterminate:pressed {        image: url(:/Images/checkBoxIndeterminatePressed); }

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。