获取QT中所有Qpushbutton的列表

Get the list of all QPushButton in Qt

本文关键字:Qpushbutton 列表 QT 获取      更新时间:2023-10-16

我想在我的MainWindow中获取所有QPushButton的列表。实际上,我有一个QRadioButton,当我取消选中时,我想禁用窗口的所有QPushButton

我该怎么做?

这是一个最小示例:

#include <QApplication>
#include <QWidget>
#include <QPushButton>
#include <QLabel>
#include <QDebug>
int main( int argn, char **argc)
{
    QApplication app(argn, argc);
    // Creating some content
    QWidget window;
    QPushButton ba(&window); ba.setObjectName("but1");
    QPushButton bb(&window);bb.setObjectName("but2");
    QLabel l(&window); l.setObjectName("label");
    QPushButton bc(&l);bc.setObjectName("but3");

    // Getting all buttons
    QList<QPushButton *> butts = window.findChildren<QPushButton *>();
    qDebug() << butts.size();
    for (const auto *but: butts) qDebug() << "   " << but->objectName();
   return 0;
}