Qt 4

Qt надає дві стандартні моделі: QStandardItemModel та QDirModel. QStandardItemModel - це багатоцільова модель, яка може використовуватися для представлення різних структур даних у вигляді списку, таблиці чи дерева. Ця модель також обробляє елементи даних. QDirModel – це модель, яка обробляє інформацію про вміст директорії. Як результат, вона не містить самих елементів даних, а просто представляє файли та директорії локальної файлової системи.

QDirModel надає готову до використання та придатну для експериментів модель, яка легко налаштовується для роботи з наявними даними. На прикладі цієї моделі ми можемо показати, як налаштовувати модель для використання з готовими уявленнями і як керувати даними за допомогою модельних індексів.

Використання Уявлень із існуючими моделями

Найбільш підходящими для використання з QDirModel є класи QListView та QTreeView. Нижченаведений приклад відображає вміст директорії у вигляді дерева і його у вигляді списку. Управління вибором елементів здійснюється так, що вони підсвічуються в обох уявленнях.

QDirModel

Ми готуємо до використання QDirModel і створюємо уявлення для відображення вмісту директорії. Тут показаний найпростіший спосіб використання моделі. Створення та використання моделі виконуються в єдиній функції main():

Модель налаштована для використання даних із директорії за замовчуванням. Ми створюємо два уявлення для відображення двома різними способами елементів, що надаються моделлю:

Уявлення створюються так само, як і інші віджети. Налаштування подання для відображення елементів моделі виконується простовикликом функції setModel() з моделлю директорії, переданої як аргумент. Виклик setRootIndex() повідомляє уявленню, дані якої директорії слід відобразити, передавшимодельний індекс, отриманий від моделі директорії.

Функція index(), що використовується в даному випадку, є унікальною для QDirModel; ми передаємо їй як параметр директорію, і вона повертає модельний індекс. Модельні індекси обговорюються у розділі Класи Моделей.

Частина функції, що залишилася, лише відображає подання на віджеті і запускає цикл обробки повідомлень програми:

У наведеному вище прикладі ми не згадали обробку вибору елементів користувачем. Ця тема більш детально розкрита у розділі Обробка Вибору у Представленні Елементів. До ознайомлення з обробкою вибору, Вам буде корисно прочитати наступний розділ та опис концепцій, що використовуються у структурі модель/подання.