当前位置: 首页 > wzjs >正文

做网站会不会亏本推广渠道有哪些

做网站会不会亏本,推广渠道有哪些,web前端开发网站,wordpress 导出 新闻Qt/C学习系列之QButtonGroup的简单使用 前言QButtonGroup刨析源码 具体使用界面设计具体函数使用初始化信号与槽函数(两种方式) 总结 前言 在练手项目中,使用了QButtonGroup。项目需求有互斥的要求,在使用QRadioButton的基础上&a…

Qt/C++学习系列之QButtonGroup的简单使用

  • 前言
  • QButtonGroup
    • 刨析源码
  • 具体使用
    • 界面设计
    • 具体函数使用
      • 初始化
      • 信号与槽函数(两种方式)
  • 总结


前言

在练手项目中,使用了QButtonGroup。项目需求有互斥的要求,在使用QRadioButton的基础上,叠加使用QButtonGroup。通过使用了解到,除QRadioButton以外,QCheckBox也可以使用,提供统一的管理。


QButtonGroup

QButtonGroup是用于对一组按钮进行统一管理的类,可以定义多个QRadioButton或QCheckBox进行分组管理。从而确保其按钮按下的互斥逻辑或统一处理的逻辑。

刨析源码

class Q_WIDGETS_EXPORT QButtonGroup : public QObject
{Q_OBJECTQ_PROPERTY(bool exclusive READ exclusive WRITE setExclusive)
public:explicit QButtonGroup(QObject *parent = Q_NULLPTR);~QButtonGroup();void setExclusive(bool);bool exclusive() const;void addButton(QAbstractButton *, int id = -1);void removeButton(QAbstractButton *);QList<QAbstractButton*> buttons() const;QAbstractButton * checkedButton() const;// no setter on purpose!QAbstractButton *button(int id) const;void setId(QAbstractButton *button, int id);int id(QAbstractButton *button) const;int checkedId() const;Q_SIGNALS:void buttonClicked(QAbstractButton *);void buttonClicked(int);void buttonPressed(QAbstractButton *);void buttonPressed(int);void buttonReleased(QAbstractButton *);void buttonReleased(int);void buttonToggled(QAbstractButton *, bool);void buttonToggled(int, bool);private:Q_DISABLE_COPY(QButtonGroup)Q_DECLARE_PRIVATE(QButtonGroup)friend class QAbstractButton;friend class QAbstractButtonPrivate;
};

借助AI可以快速刨析一下源码,同时学习一下有关QButtonGroup的属性、成员函数:

  • 添加和移除按钮:
    addButton() 为将按钮添加到按钮组中,这里要注意(QAbstractButton *, int id = -1),id默认为-1,意味着如果在未添加按钮的情况下,直接做移除操作会出现-1的情况。
    在很多时候要注意按钮组内是否有按钮,在程序编译的时候要初始化,进行按钮的添加。
    removeButton() 为移除按钮。
  • 设置互斥性:
    setExclusive() 将分类为一组的按钮进行互斥设置。对于单选按钮组,通常设置为互斥(true),这样组内只能选择一个按钮;对于复选按钮组,通常设置为非互斥(false)。
    exclusive() const:检查按钮组是否为互斥的,并反馈。
  • 获取当前选中的按钮:
    checkedButton() 获取当前选中的按钮。
  • 通过 ID 操作按钮
    button(int id) const:通过 ID 获取按钮。
    setId(QAbstractButton *button, int id):为按钮设置一个唯一的 ID。
    id(QAbstractButton *button) const:获取按钮的 ID。
    checkedId() const:返回当前选中按钮的 ID。如果没有按钮被选中,则返回 -1。
  • 信号和槽:(因为继承QObject,这意味着它可以使用 Qt 的信号和槽机制。
    QButtonGroup 提供了一些信号,例如 buttonClicked() 和 buttonPressed(),可以用于响应按钮的点击事件。
    buttonClicked(QAbstractButton *):当按钮被点击时发出信号,传递按钮的指针。
    buttonClicked(int):当按钮被点击时发出信号,传递按钮的 ID。
    buttonPressed(QAbstractButton *)、buttonPressed(int):当按钮被按下时发出信号。
    buttonReleased(QAbstractButton *)、buttonReleased(int):当按钮被释放时发出信号。
    buttonToggled(QAbstractButton *, bool)、buttonToggled(int, bool):当按钮的状态切换时发出信号(仅适用于复选按钮)。

具体使用

在项目中,需要通过不同的QRadioButton来引导后续关于QComboBox的使用。那么在项目中,我是这么处理的。

界面设计

在这里插入图片描述
这里我拖了QgroupBox,在里面包含了三个QRadioButton,并且在选择QRadioButton的基础上需要刷新点亮对应的QComboBox。

具体函数使用

初始化

	boardButtonGroup = new QButtonGroup(this);boardButtonGroup->addButton(ui->RBtn_xz_1, 0); // ID为0boardButtonGroup->addButton(ui->RBtn_xz_2, 1); // ID为1boardButtonGroup->addButton(ui->RBtn_xz_3, 2); // ID为2boardButtonGroup->setExclusive(true);for (int i = 1; i <= 12; ++i){ui->CB_xz_1->addItem(QString("选择2_%1").arg(i));ui->CB_xz_2->addItem(QString("选择3_%1").arg(i));}
  • 创建QButtonGroup,并给QRadioButton进行标号。
  • addItem初始化QComboBox控件的内容。
  • setExclusive设置互斥逻辑。

信号与槽函数(两种方式)

  • 脱离QButtonGroup进行控制:
connect(ui->RBtn_xz_2, &QRadioButton::toggled, ui->CB_xz_1, &QComboBox::setEnabled);connect(ui->RBtn_xz_3, &QRadioButton::toggled, ui->CB_xz_2, &QComboBox::setEnabled);

这里是将QRadioButton的 toggled 信号连接到 QComboBox 的 setEnabled 槽。

  • 使用QButtonGroup
handleButtonClicked(boardButtonGroup->checkedId());

handleButtonClicked 函数:传入当前按钮组中选中的按钮的 ID。这里的checkedId()就是使用到QButtonGroup的ID。

QObject::connect(boardButtonGroup, QOverload<int>::of(&QButtonGroup::buttonClicked),[this](int id) {handleButtonClicked(id);});

这里是QButtonGroup 的 buttonClicked 信号连接到一个 lambda 表达式中。通过捕捉到的ID来进行handleButtonClicked函数的处理。

void MainWindow::handleButtonClicked(int id) {switch (id) {case 0: // RBtn_xz_1 被选中ui->CB_xz_1->setEnabled(false);ui->CB_xz_2->setEnabled(false);break;case 1: // RBtn_xz_2 被选中ui->CB_xz_1->setEnabled(true);ui->CB_xz_2->setEnabled(false);break;case 2: // RBtn_xz_3 被选中ui->CB_xz_1->setEnabled(false);ui->CB_xz_2->setEnabled(true);break;default:ui->CB_xz_1->setEnabled(false);ui->CB_xz_2->setEnabled(false);break;}
}

这个代码就是根据按钮的 ID 设置 QComboBox 的启用状态。

在这里插入图片描述

总结

本文从QButtonGroup的源码角度进行分析,仅仅简单介绍了QButtonGroup的使用。对于项目中的使用,两种方式那更倾向于哪一种呢?

http://www.dtcms.com/wzjs/300329.html

相关文章:

  • 网站页面优化包括发布软文的平台有哪些
  • 968深圳网站建设公司百度怎么推广自己的产品
  • 上海做外贸网站设计百度上怎么打广告宣传
  • thinkphp手机网站模板提高工作效率的重要性
  • 妙趣网 通辽网站建设推广app最快的方法
  • 建设银行网站怎么基本转个人免费正能量erp软件下载
  • 网站做跳转在后天那个文件里做个人网站设计毕业论文
  • 一个企业网站多少钱今日刚刚发生的军事新闻
  • 湖北网站建设哪家好百度搜索风云榜排行榜
  • 网站设计客户对接流程官方百度app下载
  • 网站 沙盒百度seo快速排名
  • 照片书那个网站做的好上海优化seo
  • 电视直播网站开发友情链接你会回来感谢我
  • 今日国内新闻报道百度网站优化软件
  • 怎么看别人网站在哪里做的外链淘宝关键词搜索排名
  • 济南网站建设bajiujiu网站推广有哪些方式
  • 黄页88官网首页优化营商环境个人心得体会
  • 用web做网站实训课心得免费论坛建站系统
  • 如何使用开源程序做网站友链交换有什么作用
  • 做外贸学习网站公司营销策划方案
  • 建设网站重庆搜索引擎营销就是seo
  • 做企业网站需要多少钱网络营销的特点分别是
  • 运动网站模板企业网站有什么
  • 自己如何做黑客网站淘宝搜索关键词排名
  • 网站建设对网络营销的影响网络培训平台
  • 做茶叶网站的目的和规划品牌营销策划是干嘛的
  • 网站数据不变重新安装wordpressseo职位要求
  • wordpress打包珠海关键词优化软件
  • 深圳小程序定制百度关键词优化有效果吗
  • 公司做网站推广需要多少钱短网址链接生成