QT快速获取widget容器内指定类型所有控件

看到大佬写的代码拿来抄一下;
一个界面内有多个同类型的控件需要操作,如果一个控件一个控件的写会很呆板,而且还会增加代码量,想要更简洁一些可以按照下面demo来:

1.ui里建一个widget,里面放六个按钮

QT快速获取widget容器内指定类型所有控件_第1张图片

2.构造函数代码:

QList<QAbstractButton *> tbtns = ui->widget->findChildren<QAbstractButton *>();
    foreach (QAbstractButton *btn, tbtns) {
        btn->setCheckable(true);
        connect(btn, SIGNAL(clicked()), this, SLOT(buttonClick()));
    }

3.buttonClick函数实现:

void MainWindow::buttonClick()
{
    QAbstractButton *b = (QAbstractButton *)sender();
    QString name = b->text();

    QList<QAbstractButton *> tbtns = ui->widget->findChildren<QAbstractButton *>();
    foreach (QAbstractButton *btn, tbtns) {
        btn->setChecked(btn == b);
    }

    if(name == "1") {
        qDebug() << "1";
    } else if(name == "2") {
        qDebug() << "2";
    } else if(name == "3") {
        qDebug() << "3";
    } else if(name == "4") {
        qDebug() << "4";
    }
    //......
}

注:也可以是其他控件,总之很方便。如QLineEdit会很快速获取所有控件文本内容,省的一行一行去写获取文本代码了。

你可能感兴趣的:(QT,qt)