Qt系列教程总目录
QRadioButton
既单选框,常用作表单互斥选择选项,在“多选一”的场景中使用。
office word和PhotoShop中都有使用单选框,如下:
QRadioButton
有两个构造函数,都要指定父对象,其中一个可以设置单选框的文本。
QRadioButton(QWidget *parent = nullptr);
QRadioButton(const QString &text, QWidget *parent = nullptr);
同样可以通过拖动控件创建,也可以使用代码直接创建,控件创建默认使用构造函数QRadioButton(QWidget *parent = nullptr);
。
如下图创建了三个单选按钮,其中,RadioButton
通过拖拽控件创建,RadioButton1
和RadioButton2
通过代码直接创建:
不仅在构造时指定按钮的文本,构造后也可以修改,使用函数void setText(const QString &text);
QRadioButton
默认属于同一父组件的所有单选框都互斥,如果同一界面需要有多组“多选一”的单选按钮,可以使用QButtonGroup
为单选框分组,则每个分组内部的按钮都默认互斥。
左右两个按钮组内的按钮分别互斥。
QRadioButton
没有自己独有的信号,它继承于 QAbstractButton
,可以使用pressed
、released
、clicked
、toggled
等信号。
由于QRadioButton
常用作选择按钮,需要判断选择状态,所以toggled
信号比较常用,
对于单个按钮,使用void toggled(bool checked);
信号可以获得该按钮的选中状态:
// 连接信号与槽函数
connect(radioButton, SIGNAL(toggled(bool)), this, SLOT(btnToggled(bool)));
// 在槽函数中根据按钮选中与否进行相应操作
void Widget::btnToggled(bool checked)
{
if (checked)
{
qDebug("button is checked.");
}
else
{
qDebug("button is unchecked.");
}
}
对于按钮组(一组QRadioButton按钮),每个按钮写一个槽函数不太现实(QRadioButton的信号不能返回按钮索引,不适用多个按钮的情况),需要使用按钮组QRadioButton
的 void idToggled(int, bool);
信号,它不仅可以返回按钮id还可以返回按钮选中状态,
// 连接信号与槽函数
connect(btnGroup1, SIGNAL(idToggled(int,bool)), this, SLOT(btnToggled(int,bool)));
// 在槽函数中根据按钮选中与否进行相应操作
void Widget::btnToggled(int btn, bool checked)
{
if (!checked)
{
return;
}
switch (btn)
{
case 0:
qDebug("This is button zreo");
break;
case 1:
qDebug("This is button one");
break;
case 2:
qDebug("This is button two");
break;
default:
break;
}
}