Qt遍歷ui窗口控件

//遍歷UI中的QPushButton
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    QSignalMapper *mapper = new QSignalMapper(this);

    QObjectList list = children();
    foreach (QObject *obj, list) {
        if (obj->metaObject()->className() == QStringLiteral("QWidget")){
            QObjectList list2 = obj->children();
            foreach (QObject *obj1, list2){
                if (obj1->inherits("QPushButton")){
                    QPushButton *b = qobject_cast<QPushButton*>(obj1);
                    mapper->setMapping(b, b->text());
                    connect(b, SIGNAL(clicked(bool)), mapper, SLOT(map()));
                }
            }
        }
    }
    connect(mapper, SIGNAL(mapped(QString)), this, SLOT(slotButton(QString)));
}

void MainWindow::slotButton(QString s)
{
    qDebug() << s;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章