QRadioButton
是 Qt 框架中的一个控件,用于创建单选按钮。单选按钮通常用于让用户从一组互斥的选项中选择一个选项。以下是如何在 C++ 中使用 QRadioButton
的基本示例。
1. 包含必要的头文件
首先,确保包含 QRadioButton
和其他必要的 Qt 头文件。
#include <QApplication>
#include <QWidget>
#include <QRadioButton>
#include <QVBoxLayout>
#include <QMessageBox>
2. 创建主窗口类
创建一个继承自 QWidget
的主窗口类,并在其中添加 QRadioButton
。
class MyWindow : public QWidget {
Q_OBJECT
public:
MyWindow(QWidget *parent = nullptr) : QWidget(parent) {
// 设置窗口标题
setWindowTitle("QRadioButton 示例");
// 创建布局
QVBoxLayout *layout = new QVBoxLayout(this);
// 创建单选按钮
QRadioButton *radioButton1 = new QRadioButton("选项 1", this);
QRadioButton *radioButton2 = new QRadioButton("选项 2", this);
QRadioButton *radioButton3 = new QRadioButton("选项 3", this);
// 将单选按钮添加到布局中
layout->addWidget(radioButton1);
layout->addWidget(radioButton2);
layout->addWidget(radioButton3);
// 设置默认选中的单选按钮
radioButton1->setChecked(true);
// 连接信号和槽,处理单选按钮的选择事件
connect(radioButton1, &QRadioButton::clicked, this, &MyWindow::onRadioButtonClicked);
connect(radioButton2, &QRadioButton::clicked, this, &MyWindow::onRadioButtonClicked);
connect(radioButton3, &QRadioButton::clicked, this, &MyWindow::onRadioButtonClicked);
}
private slots:
void onRadioButtonClicked() {
// 获取选中的单选按钮
QRadioButton *radioButton = qobject_cast<QRadioButton*>(sender());
if (radioButton && radioButton->isChecked()) {
QMessageBox::information(this, "选择结果", "你选择了: " + radioButton->text());
}
}
};
3. 编写主函数
在 main
函数中创建应用程序对象和主窗口,并显示窗口。
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
// 创建主窗口
MyWindow window;
window.show();
// 运行应用程序
return app.exec();
}
4. 编译和运行
确保你已经安装了 Qt 开发环境,然后使用 qmake
和 make
编译程序。
qmake -project
qmake
make
运行生成的可执行文件,你将看到一个带有单选按钮的窗口。
5. 代码说明
QRadioButton
:用于创建单选按钮。setChecked(true)
:设置默认选中的单选按钮。QRadioButton::clicked
信号:当单选按钮被点击时触发。sender()
:获取触发信号的对象的指针。QMessageBox
:用于显示用户选择的结果。
6. 扩展功能
- 分组单选按钮:如果需要将单选按钮分组,可以使用
QButtonGroup
。 - 动态创建单选按钮:可以根据需要动态创建单选按钮并添加到布局中。
- 样式设置:可以使用 Qt 样式表(
setStyleSheet
)自定义单选按钮的外观。
例如,使用 QButtonGroup
分组:
QButtonGroup *buttonGroup = new QButtonGroup(this);
buttonGroup->addButton(radioButton1);
buttonGroup->addButton(radioButton2);
buttonGroup->addButton(radioButton3);