Qt 使用 QSignalMapper + 递归搜寻特定名称按钮的点击处理方式

本文介绍了如何使用Qt中的QSignalMapper组件,结合递归搜索特定名称的按钮,实现功能简单的按钮点击事件的统一处理。通过设置顶层对象、前缀并定义槽函数,可以在不为每个按钮单独创建槽的情况下简化代码。示例包括了构造函数、槽函数和UI界面的配置。
摘要由CSDN通过智能技术生成

目的:为了解决一些功能简单的按钮不想特地专门开一个槽函数进行处理的,或者多个按钮有类似功能的,进行统一处理时候可以比较方便

使用:继承一个QDialog或者QMainWindow或QWidget或者直接粘贴进去

使用头文件:QSignaMapper

描述:

obj指定最顶层的空间Id

prefix即为前缀

mapper指定一个



    /**
     * @brief 把目标按钮给绑定到SignalMapper上
     * @details 例子: prefix 传 "B"则所有 Bxx_yyyy 的按钮都会被映射到ID号为xx的QSignalMapper上
     * @param obj
     * @param prefix
     * @param mapper
     */
void QDialogEx::targetButtonMapped(QObject* obj, QString& prefix, QSignalMapper& mapper)
{
    QObjectList list = obj->children();
    if (list.size() == 0)
    {
        return;
    }
    foreach (auto &o, list)
    {
        if (o->inherits("QPushButton"))
        {
            if (!o->objectName().startsWith(prefix))
            {
                continue;
            }

            QStringList part = o->objectName().split(&
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值