19. (П9) Відображення даних у таблицях: список нотаток у QTableView¶
Передумови¶
- Прочитана Лекція 18 — Модель–представлення (Model/View)
- Успішно запущений застосунок «Notes» із таблицею з лекції та пройдені всі шість перевірок із розділу «Що перевірити руками»
- Виконана Практична 8 — багатовіконний застосунок: пакет
app/беремо звідти й далі тільки доповнюємо
Мова в коді
Усі рядкові літерали, написи в меню й на кнопках, заголовки колонок, заголовок вікна, SQL-запити, імена файлів, модулів та змінних — лише латиницею. Своє ім'я, прізвище та групу пишіть у транслітерації: Ivan Petrenko, KI-31. Кирилиця допускається тільки в коментарях.
Завдання¶
Замінити список нотаток (QListWidget із практичних 7–8) на таблицю QTableView з власною моделлю над спільним AppState.
Обов'язкові вимоги до результату:
- дані нотаток існують в одному екземплярі — у
AppState; модель копії не робить; - усі зміни нотаток проходять через методи стану, модель лише перекладає виклики;
QListWidget,QTableWidgetіQStandardItemModelу проєкті не використовуються;- номер рядка ніде не є ідентифікатором нотатки — тільки
note.id; - зміна однієї нотатки не скидає модель, не втрачає виділення й позицію прокрутки;
- усі відкриті головні вікна показують ті самі дані одночасно.
Персоналізація¶
Константи, як і раніше, живуть тільки в app/config.py. До наявних додаються три нові:
STUDENT_NAME = "Ivan Petrenko" # ваше ім'я та прізвище транслітерацією
STUDENT_GROUP = "KI-31" # ваша група
DB_FILE = "workspace_ivan_petrenko.db" # файл бази з практичних 3-5
APP_TITLE = "Notes Manager" # назва застосунку
TABLE_PREVIEW_LENGTH = 40 # символів тіла нотатки в колонці Preview
LONG_NOTE_CHARS = 200 # від якої довжини нотатка вважається довгою
EMPTY_TABLE_TEXT = "No notes to show" # текст, коли таблиця порожня
Заголовки вікон і команди з практичної 8 лишаються без змін.
Знайшли помилку чи бажаєте додати інформацію, щоб покращити курс? Створіть issue на GitHub