レイアウト内のコントロールを取得する方法を教えてください
Qtでは、`QLayout`クラスのメンバ関数を介してレイアウト内のWidgetを取得できます。以下に一般的な方法をいくつか示します。
QLayout::itemAt(int index) メソッドは、指定されたインデックスの位置にあるレイアウトアイテムを返します。
レイアウト内のアイテム数を取得します。
レイアウトからインデックスに基づいてアイテムを削除して返す。
以下に、垂直レイアウト内のすべてのコントロールを取得する方法を示すサンプルコードを示します。
#include
#include
#include
int main() {
QWidget widget;
QVBoxLayout layout(&widget);
// 添加控件到垂直布局中
QPushButton button1("Button 1");
QPushButton button2("Button 2");
QLabel label("Label");
layout.addWidget(&button1);
layout.addWidget(&button2);
layout.addWidget(&label);
// 获取布局中的控件
for (int i = 0; i < layout.count(); ++i) {
QLayoutItem* item = layout.itemAt(i);
if (item->widget()) {
// 如果项是控件
QWidget* widget = item->widget();
// 处理控件...
}
}
return 0;
}
このコードは、単純なウィジェットを作成し、垂直レイアウトに3つのウィジェット(2つのボタンと1つのラベル)を追加します。その後に、`itemAt()`と`widget()`関数を使用して、レイアウト内のすべてのアイテムを反復処理して、ウィジェットかどうかを確認します。