qt下多个子控件信号槽绑定方法

在软件一些界面开发中,需要用到批量相同的控件,比如一些设置界面有几十个lineedit输入框,又或是许多个checkbox控件,如下图所示(qt的设置界面):
qt下多个子控件信号槽绑定方法_第1张图片
其中设置,只要有一个控件做出改动都需要去实时刷新保存参数,这样有什么方案呢?

1、如果控件有规则,比如代码是使用for循环new的对象,我们就可以在new了之后的循环内容中加入你的槽函数。

2、第二种情况就是分开new的对象,难道每个对象new的时候都coonnect一次?那如果是qt designed设计界面中拖进去设置的界面呢?

针对这种情况下我们就可以使用qt的findChildren函数(注:子控件必须指定父对象,然后在父对象里面使用findChildren)
如下代码所示:

  QList<QCheckBox *> checkboxList = this->findChildren<QCheckBox *>();
    for (int i = 0; i < checkboxList.size(); i++) 
    {
        connect(checkboxList[i], &QCheckBox::clicked, this, [=]()
        {
        //你需要执行的槽函数内容
        }
    }

使用函数找到弹窗下面的所有这一类控件对象,并放在一个指针链表中,这样就可以做统一的管理了,比如我们想要的信号槽连接。

你可能感兴趣的:(C++\QT,qt,信号槽,多控件,子控件)