위젯 튜토리얼 - 중첩 레이아웃
위젯이 다른 위젯을 포함할 수 있는 것처럼, 레이아웃을 사용하여 위젯을 여러 단계로 그룹화할 수 있습니다. 여기서는 쿼리 결과를 표시하는 테이블 뷰 위, 창 상단에 라벨과 라인 에디트를 나란히 표시하고자 합니다.
이를 위해 두 개의 레이아웃을 생성합니다. ` queryLayout `는 ` QHBoxLayout `이며, ` QLabel `와 ` QLineEdit ` 위젯을 나란히 배치한 것입니다. ` mainLayout `는 ` QVBoxLayout `이며, ` queryLayout `와 ` QTableView ` 위젯을 세로로 배열한 것입니다.
| ![]() |
mainLayout 의 addLayout() 함수를 호출하여 queryLayout 를 resultView 테이블 위에 삽입한다는 점에 유의하십시오.
QTableView 위젯( resultView)에 표시되는 데이터를 포함하는 모델을 설정하는 코드는 생략했습니다. 완전성을 위해 아래에 이를 보여드립니다.
QHBoxLayout 및 QVBoxLayout 외에도, Qt는 더 복잡한 사용자 인터페이스를 지원하기 위해 QGridLayout 및 QFormLayout 클래스를 제공합니다. Qt Widgets Designer 을 실행하면 이를 확인할 수 있습니다.
모델 설정
위의 코드에서는 레이아웃 사용에 집중하기 위해 테이블 데이터의 출처를 명시하지 않았습니다. 여기에서 모델은 행에 해당하는 여러 항목을 포함하고 있으며, 각 항목은 두 열의 데이터를 담도록 설정되어 있음을 알 수 있습니다.
QStandardItemModel model;
model.setHorizontalHeaderLabels({ QApplication::translate("nestedlayouts", "Name"),
QApplication::translate("nestedlayouts", "Office") });
const QStringList rows[] = {
QStringList{ QStringLiteral("Verne Nilsen"), QStringLiteral("123") },
QStringList{ QStringLiteral("Carlos Tang"), QStringLiteral("77") },
QStringList{ QStringLiteral("Bronwyn Hawcroft"), QStringLiteral("119") },
QStringList{ QStringLiteral("Alessandro Hanssen"), QStringLiteral("32") },
QStringList{ QStringLiteral("Andrew John Bakken"), QStringLiteral("54") },
QStringList{ QStringLiteral("Vanessa Weatherley"), QStringLiteral("85") },
QStringList{ QStringLiteral("Rebecca Dickens"), QStringLiteral("17") },
QStringList{ QStringLiteral("David Bradley"), QStringLiteral("42") },
QStringList{ QStringLiteral("Knut Walters"), QStringLiteral("25") },
QStringList{ QStringLiteral("Andrea Jones"), QStringLiteral("34") }
};
QList<QStandardItem *> items;
for (const QStringList &row : rows) {
items.clear();
for (const QString &text : row)
items.append(new QStandardItem(text));
model.appendRow(items);
}
resultView->setModel(&model);
resultView->verticalHeader()->hide();
resultView->horizontalHeader()->setStretchLastSection(true);모델과 뷰의 사용법은 ‘항목 뷰 예제’와 ‘모델/뷰 프로그래밍 개요’에서 다룹니다.
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.
