Changing Checkbox Label Based on Check State
-
I want to have the checkbox label change based on the state it is in. I'm using the connect but it doesn't seem to be working. What am I doing wrong?
pRequirementCheckbox1 = new QCheckBox("Unselected");
pRequirementCheckbox1->setTristate(true);
connect(pRequirementCheckbox1, SIGNAL(stateChanged(int)), this, SLOT(onSelectRequirements(pRequirementCheckbox1)));void ScheduleAdvice::onSelectRequirements(QCheckBox *checkbox)
{
if(checkbox->checkState() == Qt::Checked)
{
checkbox->setText("Selected");
}
else if(checkbox->checkState() == Qt::PartiallyChecked)
{
checkbox->setText("Must Meet");
}
else
{
checkbox->setText("Unselected");
}
} -
@Phamy1289 said in Changing Checkbox Label Based on Check State:
connect(pRequirementCheckbox1, SIGNAL(stateChanged(int)), this, SLOT(onSelectRequirements(pRequirementCheckbox1)));
I don't think this will ever work...
Try:
connect(pRequirementCheckbox1, SIGNAL(stateChanged(int)), this, SLOT(onSelectRequirements(int))); void ScheduleAdvice::onSelectRequirements(int state) { // Access your checkBox and check for state... }
If you dont have your checkBox in your
ui
then you could use lambdas:connect(pRequirementCheckbox1, &QCheckBox::stateChanged, this, [&] () { if(pRequirementCheckbox1->checkState() == Qt::Checked) { pRequirementCheckbox1->setText("Selected"); } else if(pRequirementCheckbox1->checkState() == Qt::PartiallyChecked) { pRequirementCheckbox1->setText("Must Meet"); } else { pRequirementCheckbox1->setText("Unselected"); } } });
-
Have you ever read the doc ?
The QButtonGroup class provides a container to organize groups of button widgets.
QButtonGroup provides an abstract container into which button widgets can be placed. It does not provide a visual representation of this container (see QGroupBox for a container widget), but instead manages the states of each of the buttons in the group.
An exclusive button group switches off all checkable (toggle) buttons except the one that has been clicked. By default, a button group is exclusive. The buttons in a button group are usually checkable QPushButtons, QCheckBoxes (normally for non-exclusive button groups), or QRadioButtons. If you create an exclusive button group, you should ensure that one of the buttons in the group is initially checked; otherwise, the group will initially be in a state where no buttons are checked.
A button can be added to the group with addButton() and removed with removeButton(). If the group is exclusive, the currently checked button is available with checkedButton(). If a button is clicked, the buttonClicked() signal is emitted; for a checkable button in an exclusive group this means that the button has been checked. The list of buttons in the group is returned by buttons().
In addition, QButtonGroup can map between integers and buttons. You can assign an integer id to a button with setId(), and retrieve it with id(). The id of the currently checked button is available with checkedId(), and there is an overloaded signal buttonClicked() which emits the id of the button. The id -1 is reserved by QButtonGroup to mean "no such button". The purpose of the mapping mechanism is to simplify the representation of enum values in a user interface.
See also QGroupBox, QPushButton, QCheckBox, and QRadioButton.