Методика выполнения л/р №2 Если у вас возникли трудности при выполнении лабораторной работы №2 (разработка однооконного приложения), то выполнение следующих шагов позволит вам максимально приблизиться к написанию программы и значительно уменьшить время ее доработки на занятии. 1. Создайте проект и расположите виджеты на окне. Настройте отображение и проверьте через просмотр, что при сжатии/растяжении окна виджеты меняют свои размеры соответственно. 2. Задайте всем виджетам (кроме меток) имена и запишите себе их — они понадобятся вам при написании программы. Имена должны быть смысловыми, чтобы виджеты можно было легко опознать, например, btnSave – кнопка «Сохранить», lstBooks – список книг и т.п. 3. В заголовочный файл после команд #include но до начала описания класса главного окна введите описание класса для хранения данных об одной записи. 4. Добавьте в описание класса главного окна переменные, необходимые для хранения в памяти данных во время работы программы. Обычно к это два объекта класса записи для хранения двух записей. 5. Найдите в cpp файле метод-конструктор (его имя совпадает с именем класса главного окна), часть его уже сгенерирована за вас. После вызова функции setupUi вам необходимо вписать код для выполнения следующих действий: 1) инициализация переменных-свойств класса (например заполнить поля записей начальными значениями по умолчанию, особенно перечни, т.к. они не могут иметь «пустых» значений); 2) установка начальное состояние виджетов окна: активность, видимость, содержимое перечней (если они содержаться в ComboBox или ListWidget), валидаторы для строк редактирования и т.д. 6. Составьте список действий пользователя (и, при необходимости, других событий), на которые требуется реакция — например «нажатие кнопки сохранения записи» или «смена номера текущей записи в SpinBox». 7. Составьте словесный алгоритм действий по этим событиям (пример алгоритма см. в разделе «Пример разработки слота»). 8. В справке по Qt найдите классы виджетов, события от которых вы собираетесь обрабатывать, и на каждое действие пользователя выпишите сигнал, который оповещает о том, что произошло данное событие. 9. Впишите в описание класса заголовки функций-слотов для событий, на которые требуется реакция (в разделе private slots:); а также заголовки служебных функций для выполнения повторяющихся действий (например отображения содержимого записи в виджетах). Слоты должны иметь тип возвращаемого значения void; параметры (если они используются) должны совпадать с параметрами соответствующих им сигналов. 10.В cpp файле опишите код объявленных вами методов. Переменные, объявленные вами в классе, доступны для них. Для выполнения какихлибо действий с виджетами у вас есть объект ui, содержащий указатели на все виджеты; имена указателей совпадают с именами, которые вы дали виджетам. Для ознакомления с функциями работы с виджетами используйте Qt Assistant, а также таблицу, в которой приведены наиболее важные сигналы, функции и свойства виджетов. Если вы не можете выполнить какое-либо действие с виджетом, запишите его в программе комментарием, чтобы было легче разобрать его на занятии. 11. В методе-конструкторе класса главного окна соедините сигналы с соответствующими слотами, используя функцию connect. Следите за правильностью написания вызовов этой функции — отклонение от шаблона приведет к тому, что соединение не будет работать. 12.При наличии ограничений на значения полей типа «строка» создайте классы валидаторов в соответствии с инструкцией по разработке валидаторов.