Учебное пособие по виджетам - Вложенные компоновщикиФайлы: Так же, как виджеты могут содержать в себе другие виджеты, компоновки могут использоваться для предоставления различных уровней группировки виджетов. Здесь мы хотим вывести на экране метку рядом с однострочным полем ввода в верхней части окна, выше представления таблицы, показывающей результаты запроса. Мы достигаем этого созданием двух компоновщиков: queryLayout - это QHBoxLayout, который содержит виджеты QLabel и QLineEdit помещённые рядом; mainLayout - это QVBoxLayout, который содержит queryLayout и QTableView расположенные вертикально.
Обратите внимание на то, что мы вызываем функцию mainLayout'а, addLayout(), для вставки queryLayout выше таблицы resultView. Мы пропустили код, который устанавливает модель, содержащую данные, показанный виджетом QTableView, resultView. Для заверешённости, мы покажем его ниже. Наряду с QHBoxLayout и QVBoxLayout, чтобы помочь с более сложными пользовательскими интерфейсами, Qt также предоставляет классы QGridLayout и QFormLayout . Увидеть это можно если запустить Qt Designer. Настройка моделиВ вышеприведённом коде мы не показали откуда приходят данные таблицы поскольку хотели сконцентрироваться на использовании компоновок. Здесь мы увидим, что модель сохраняет некоторое количество элементов связанных со строками, каждый из которых устанавливается на содержание данных для двух столбцов. QStandardItemModel model; model.setHorizontalHeaderLabels( QStringList() << QApplication::translate("nestedlayouts", "Name") << QApplication::translate("nestedlayouts", "Office")); QList<QStringList> rows = QList<QStringList>() << (QStringList() << "Verne Nilsen" << "123") << (QStringList() << "Carlos Tang" << "77") << (QStringList() << "Bronwyn Hawcroft" << "119") << (QStringList() << "Alessandro Hanssen" << "32") << (QStringList() << "Andrew John Bakken" << "54") << (QStringList() << "Vanessa Weatherley" << "85") << (QStringList() << "Rebecca Dickens" << "17") << (QStringList() << "David Bradley" << "42") << (QStringList() << "Knut Walters" << "25") << (QStringList() << "Andrea Jones" << "34"); foreach (QStringList row, rows) { QList<QStandardItem *> items; foreach (QString text, row) items.append(new QStandardItem(text)); model.appendRow(items); } resultView->setModel(&model); resultView->verticalHeader()->hide(); resultView->horizontalHeader()->setStretchLastSection(true); Использование моделей и представлений освещено в Примерах представлений элементов и в обзоре Введение в программирование модель/представление. |
Попытка перевода Qt документации. Если есть желание присоединиться, или если есть замечания или пожелания, то заходите на форум: Перевод Qt документации на русский язык... Люди внесшие вклад в перевод: Команда переводчиков |