下面是一个简单的Qt Radio Button示例:
main.cpp
#include <QApplication>
#include <QWidget>
#include <QRadioButton>
#include <QVBoxLayout>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QWidget window;
QVBoxLayout *layout = new QVBoxLayout;
QRadioButton *radio1 = new QRadioButton("Option 1");
QRadioButton *radio2 = new QRadioButton("Option 2");
QRadioButton *radio3 = new QRadioButton("Option 3");
layout->addWidget(radio1);
layout->addWidget(radio2);
layout->addWidget(radio3);
window.setLayout(layout);
window.show();
return a.exec();
}
上述示例创建了一个窗口,并添加了三个Radio Button。运行该示例后,您将看到一个垂直布局,其中包含三个单选按钮“Option 1”,“Option 2”和“Option 3”。
请注意,这里我们使用QVBoxLayout来放置单选按钮。 QVBoxLayout是Qt中的一个布局类,它以垂直方向排列其子部件。
为了使这些单选按钮在逻辑上相关联,您需要将它们分组。可以使用QButtonGroup类来实现此目的。
例如,以下代码片段演示如何将三个单选按钮分组:
#include <QButtonGroup>
QButtonGroup *group = new QButtonGroup;
group->addButton(radio1);
group->addButton(radio2);
group->addButton(radio3);
现在,当用户选择其中一个单选按钮时,其他单选按钮将被取消选中状态。您可以使用QButtonGroup的checkedId()方法来获取当前选中的单选按钮的ID。例如:
int selectedId = group->checkedId();
注意,如果没有任何单选按钮被选中,则checkedId()将返回-1。
这是一个更完整的示例,演示如何响应单选按钮的选中事件:
main.cpp
#include <QApplication>
#include <QWidget>
#include <QRadioButton>
#include <QVBoxLayout>
#include <QButtonGroup>
class MyWidget : public QWidget
{
public:
MyWidget(QWidget *parent = nullptr)
: QWidget(parent)
{
QVBoxLayout *layout = new QVBoxLayout;
QRadioButton *radio1 = new QRadioButton("Option 1");
QRadioButton *radio2 = new QRadioButton("Option 2");
QRadioButton *radio3 = new QRadioButton("Option 3");
layout->addWidget(radio1);
layout->addWidget(radio2);
layout->addWidget(radio3);
m_group = new QButtonGroup;
m_group->addButton(radio1, 1);
m_group->addButton(radio2, 2);
m_group->addButton(radio3, 3);
connect(m_group, SIGNAL(buttonClicked(int)), this, SLOT(onButtonClicked(int)));
setLayout(layout);
}
private slots:
void onButtonClicked(int id)
{
qDebug() << "Button clicked:" << id;
}
private:
QButtonGroup *m_group;
};
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MyWidget w;
w.show();
return a.exec();
}
在上述示例中,我们创建了一个名为MyWidget的自定义QWidget类,该类包含三个单选按钮和一个QButtonGroup。我们还在构造函数中连接了buttonClicked()信号和onButtonClicked()槽。
当用户单击其中一个单选按钮时,buttonClicked()信号将被发射,并调用onButtonClicked()槽。在这里,我们将简单地打印所选的单选按钮的ID。