您的位置:首页 > 科技 > 能源 > crm客户管理系统实训报告_响应式布局优缺点_做一个app平台需要多少钱_怎样在百度打广告

crm客户管理系统实训报告_响应式布局优缺点_做一个app平台需要多少钱_怎样在百度打广告

2025/6/21 18:04:14 来源:https://blog.csdn.net/enyp80/article/details/145599452  浏览:    关键词:crm客户管理系统实训报告_响应式布局优缺点_做一个app平台需要多少钱_怎样在百度打广告
crm客户管理系统实训报告_响应式布局优缺点_做一个app平台需要多少钱_怎样在百度打广告

1. QRadioButton 基本概念

  • 用途:用于单选场景,同一分组中仅允许一个按钮被选中。

  • 继承关系:继承自 QAbstractButton,支持按钮的通用特性(如点击事件、状态切换)。

  • 默认行为:同一父容器下的多个 QRadioButton 自动形成互斥组(排他性)。


2. 创建与分组

创建实例
QRadioButton *radio1 = new QRadioButton("Option 1", parentWidget);
QRadioButton *radio2 = new QRadioButton("Option 2", parentWidget);

手动分组

  • 方法 1:使用 QButtonGroup(推荐,灵活控制分组):
QButtonGroup *group = new QButtonGroup(parent);
group->addButton(radio1);
group->addButton(radio2);
  • 方法 2:放入同一父容器(如 QGroupBox 或 QWidget)中,利用默认排他性。

3. 信号与槽

常用信号:
  • toggled(bool checked):按钮选中状态变化时触发。

  • clicked():按钮被点击时触发(不关心状态变化)。

示例连接:
connect(radio1, &QRadioButton::toggled, [](bool checked) {if (checked) qDebug() << "Option 1 selected!";
});

4. 样式定制(QSS)

  • 通过 Qt 样式表自定义外观:
radio1->setStyleSheet("QRadioButton::indicator { width: 20px; height: 20px; }""QRadioButton::indicator:checked { background-color: #FFA500; }"
);

5. 获取选中状态

  • 遍历检查:
for (auto btn : group->buttons()) {if (btn->isChecked()) {qDebug() << "Selected:" << btn->text();}
}
  • 直接获取(通过 QButtonGroup):
QAbstractButton *selected = group->checkedButton();
if (selected) qDebug() << "Selected:" << selected->text();

6. 常用方法

  • setChecked(true):默认选中。

  • isChecked():检查是否选中。

  • setText() / text():设置或获取显示文本。

  • setEnabled(false):禁用按钮。


7. 注意事项

  • 分组管理:跨父容器的按钮需通过 QButtonGroup 分组。

  • 默认选中:需手动调用 setChecked(true) 初始化选中状态。

  • 内存管理:建议设置父对象,利用 Qt 对象树自动释放内存。

  • 排他性:若需关闭自动互斥,使用 setAutoExclusive(false)(罕见需求)。


8. 完整示例

#include <QApplication>
#include <QWidget>
#include <QVBoxLayout>
#include <QRadioButton>
#include <QButtonGroup>
#include <QDebug>int main(int argc, char *argv[]) {QApplication a(argc, argv);QWidget window;QVBoxLayout *layout = new QVBoxLayout(&window);QRadioButton *radio1 = new QRadioButton("Option 1");QRadioButton *radio2 = new QRadioButton("Option 2");radio2->setChecked(true); // 默认选中QButtonGroup group;group.addButton(radio1);group.addButton(radio2);layout->addWidget(radio1);layout->addWidget(radio2);QObject::connect(radio1, &QRadioButton::toggled, [&](bool checked) {if (checked) qDebug() << "Option 1 selected!";});window.show();return a.exec();
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com