ウィンドウ内のすべてのコントロールを取得する方法

QObject::findChildren 関数を使えばウィンドウ内の全てのコントロールを取得できる。この関数のプロトタイプは次のとおり。

template <typename T>
QList<T*> QObject::findChildren(const QString& name = QString(), Qt::FindChildOptions options = Qt::FindChildrenRecursively) const;

Tはコントロールの種類、nameは探したいコントロール名(省略可能)、optionsは検索オプション(省略可能)

以下は、ウィンドウ内のすべての QPushButton コントロールを取得する方法を示すサンプル コードです。

#include <QApplication>
#include <QPushButton>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QWidget window;

    QPushButton button1("Button 1", &window);
    QPushButton button2("Button 2", &window);
    QPushButton button3("Button 3", &window);

    window.show();

    // 获取窗口内所有QPushButton控件
    QList<QPushButton*> buttons = window.findChildren<QPushButton*>();

    // 打印控件名称
    for (QPushButton* button : buttons) {
        qDebug() << button->text();
    }

    return a.exec();
}

上述のコードを実行すると、ウィンドウに3つの QPushButton ウィジェットが表示され、それらの名前がコンソール出力にプリントされます。

bannerAds