描述
QRadioButton小部件提供了带有文本标签的单选按钮。
QRadioButton是一个选项按钮,可以被打开(选中)或关闭(未选中)。单选按钮通常向用户呈现“多个中的一个”选择。在一组单选按钮中,一次只能选择一个单选按钮;如果用户选择另一个按钮,则先前选择的按钮将关闭。
单选按钮默认情况下是autoExclusive的。如果启用了auto-exclusive,属于同一父部件的单选按钮将表现得像同一组互斥按钮。如果您需要为属于同一父部件的单选按钮创建多个互斥按钮组,请将它们放入一个QButtonGroup中。
每当一个按钮打开或关闭时,它就会发出toggled()信号。如果您希望在按钮状态改变时触发某个操作,请连接到该信号。使用isChecked()来查看特定按钮是否被选中。
与QPushButton一样,单选按钮显示文本,并可选择显示小图标。可以使用setIcon()设置图标。文本可以在构造函数中设置,也可以使用setText()设置。通过在文本中使用’&'字符前缀,可以指定快捷键。例如:
QRadioButton *button = new QRadioButton(“从&光标开始搜索”, this);
要显示实际的’&‘字符,请使用’&&'。
常用函数介绍
构造函数:
QRadioButton(QWidget* parent = nullptr)
默认构造函数,创建一个没有父部件的单选按钮。
QRadioButton(const QString& text, QWidget* parent = nullptr)
使用指定的文本创建一个没有父部件的单选按钮。
QRadioButton(const QIcon& icon, const QString& text, QWidget* parent = nullptr)
使用指定的图标和文本创建一个没有父部件的单选按钮。
常用函数
void setText(const QString& text)
设置单选按钮显示的文本。
void setChecked(bool checked)
设置单选按钮的选中状态,true为选中,false为未选中。
bool isChecked() const
返回单选按钮的选中状态,如果选中则返回true,否则返回false。
void setIcon(const QIcon& icon)
设置单选按钮显示的图标。
void setShortcut(const QKeySequence& shortcut)
设置单选按钮的快捷键。
信号和槽
void toggled(bool checked)
当单选按钮选中状态发生改变时发出的信号,参数checked表示当前的选中状态。
void clicked(bool checked = false)
当单选按钮被点击时发出的信号,参数checked表示当前的选中状态。
void pressed()
当单选按钮被按下时发出的信号。
void released()
当单选按钮被释放时发出的信号。
void toggled(bool checked)
当单选按钮的选中状态发生改变时发出的信号,参数checked表示当前的选中状态。
示例
#include <QApplication>
#include <QWidget>
#include <QHBoxLayout>
#include <QRadioButton>
#include <QButtonGroup>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
// 创建主窗口
QWidget window;
window.setWindowTitle("RadioButton 示例");
// 创建水平布局
QHBoxLayout* layout = new QHBoxLayout(&window);
// 创建按钮组
QButtonGroup* buttonGroup = new QButtonGroup(&window);
// 创建三个单选按钮
QRadioButton* radioBtn1 = new QRadioButton("选项1");
QRadioButton* radioBtn2 = new QRadioButton("选项2");
QRadioButton* radioBtn3 = new QRadioButton("选项3");
// 默认设置第一个单选按钮选中
radioBtn1->setChecked(true);
// 将单选按钮添加到按钮组中
buttonGroup->addButton(radioBtn1);
buttonGroup->addButton(radioBtn2);
buttonGroup->addButton(radioBtn3);
// 将按钮组的 exclusive 属性设置为 true,确保只能选中一个选项
buttonGroup->setExclusive(true);
// 将单选按钮添加到布局中
layout->addWidget(radioBtn1);
layout->addWidget(radioBtn2);
layout->addWidget(radioBtn3);
// 设置主窗口的布局
window.setLayout(layout);
// 显示主窗口
window.show();
return app.exec();
}
效果
radioBtn
上述示例代码创建了一个窗口,并使用QVBoxLayout作为布局管理器。
创建了三个QRadioButton单选按钮,并将它们添加到QButtonGroup按钮组中,确保只能选中一个选项。
最后,将单选按钮添加到布局中,并显示主窗口。