В.а. Создание формы

Статья на стадии разработки

После создания и добавления в svn проекта приступим к построению интерфейса. Для этого , предварительно загрузив проект в QtCreator, нажмем на пиктограмму «Дизайнер», см. рисунок.

Окно редактора графического интерфейса разделено на несколько частей. Для удобства описания мы выделим важные элементы разработки пронумерованными разноцветными прямоугольниками и перечислим. Слева располагается  панель виджетов – она обозначена синим прямоугольником (1), (примеры виджетов: кнопки, надписи и т.п.). Затем сверху расположена «форма» (5) – окно разрабатываемого приложения. А следом за ней – инспектор объектов (2). Прямо под ним находится редактор свойств (3). И, наконец, в поле под «формой» размещен редактор сигналов и слотов или, в зависимости от выбранной вкладки, редактор действий (4).

Используя «дизайнерские Штучки» мы ставим перед собой цель «построить» приведенный на рисунке ниже  GUI для обсуждаемого проекта.

При создании формы на ней автоматически создается с панелью меню «menuBar» и строкой состояния «statusBar», расположенные горизонтально вверху и внизу формы, соответственно. Согласно задумке автора на форме из этих элементов будет задействовано лишь меню «menuBar».

Создадим структуру меню: дважды кликнув по панели меня в области «Пишите здесь» напишем «Фаил»  первый пункт меню.В меню «Фаил» добавим пункт «Создать». Обратим внимание на то, что одновременно добавились и новые элементы в иерархической структуре интерфейса в инспекторе объектов. Созданную ветвь меню переименуем в «menu», а объект пункта «Создать» -в Creat_act. При необходимости разделить пункты в меню на логические блоки можно добавить разделитель.

Продолжая действовать таким же образом получим панель меню следующего вида:

I. Фаил

  1. Создать name = «Creat_act»
  2. Открыть name = «Open_act»
  3. Сохранить тескт name = «Save_act»
  4. Сохранить фонему name = «Save_fonem_act»
  5. Выход name = «Exit_act»

II Правка

  1. Отменить name = «Undo_act»
  2. Вернуть name = «Redo_act»
  3. Тут сделаем разделитель name = «separator»
  4. Копировать name = «Copy_act»
  5. Вставить name = «Past_act»
  6. Вырезать name = «Cut_act»
  7. Очистить name = «Clear_act»
  8. Разделитель name = «separator»
  9. Выделить все name = «SelectAll_act»
  10. Найти name = «Find_act»

III Параметры

  • Удалить не читаемые символы name = «find_char»

IV О программе

  • Об авторе name = «about_act»

Здесь параметр «name» означает имя объекта, которое отражено в инспекторе объектов.

Этап формирования графической части меню окончен. Теперь создадим «начинку» формы. Нам потребуется

  1. поле ввода текста (объект QPlainTextEdit с именем RechText), который программа обработает и передаст синтезатору речи для формирования звуковой информации;
  2. поле вывода сообщений (объект  QPlainTextEdit с именем RechOutText) приложения, ошибок и т.п. ;
  3. выпадающий список (объект  QComboBox с именем comboBox), чтобы обозначить на каком языке введен текст и поясняющая надпись «Язык для синтеза» на основе объекта Qlabel ;
  4. галка Альтернативная команда (объект QCheckBox с именем checkBox), для переключения формата команд Festival;
  5. для «фиксации» элементов на форме согласно задумке воспользуемся объектом spacer (пружинка) имя которого не существенно;
  6. кнопки Сохранить в фаил и Голос (объекты QPushButton с именами pushButton_2 и ButtonGolos соответственно) для сохранения фонемы и синтеза голоса, соответственно.

Одним из инструментов разработки интерфейса, которые Автор счел интересным и в тоже время загадочным  является Компоновщик. Для ясности в какой сфере применяется этот инструмент процитируем документацию с CrossPlatform.ru:

«Qt включает в себя набор классов управления компоновкой (layout management), которые используются для описания того, как виджеты расположены в пользовательском интерфейсе приложения. Эти компоновки автоматически позиционируют и изменяют размер виджетов, когда объем доступного пространства для них изменяется, гарантируя что они единообразно расположены и что пользовательский интерфейс как целое остается пригодным к использованию.»

Для предсказания результатов применения Компоновщика к элементам формы требует от разработчика явно указать минимальный/максимальный и характер изменения размера формы, объектов расположенных на ней, однако, оговоримся, что это не всегда позволяет предугадать результат. Задать минимальный/максимальный эти размеры можно выделив объект или группу объектов, затем выбрать пункт «установить минимальный (максимальный) размер» в разделе контекстного меню (клик правой клавишей мыши по форме) «ограничить размеры«, указанные данные отобразятся в соответствующих полях редактора свойств (3). Кроме того редакторе свойств в разделе sizePolicy нужно указать характер изменения размера по горизонтали и вертикали подробнее об этом написано, например, тут.

На рисунке ниже представлен GUI проекта «Голос» с «разбивкой» Компоновщика.

После создания меню, поместим на форму в два воображаемых столбца:

  • объект QPlainTextEdit с именем RechText и текстом по умолчанию «Введите речь для чтения«
  • label «Язык для синтеза», выпадающий список QComboBox , галка Альтернативная команда QCheckBox и объект spacer (пружинка).

задаем размеры в редакторе свойств (3) согласно рисунку ниже (не забывая явно указать минимальные).

Для кнопок устанавливаются одинаковые минимальные и максимальные размеры, sizePolicy [Fixed, Fixed, ...] – при этих условиях кнопки не будут увеличиваться и уменьшаться. Размер для текстового поля ограничим только минимальным значением, т.к. это поле не должно уменьшаться в ноль, однако, для комфортного редактирования  текста пользователь будет иметь возможность задать больший размер. Методом перебора автор проекта выбрал следующие параметры sizePolicy для текстового поля [Expanding, Expanding, ...], а для объекта Qlabel -  [Preferred, Preferred].

После этих приготовлений приступим к компоновке. Предполагается, что дизайнер (разработчик) уже разместил элементы в соответствии с рисунком GUI проекта «Голос».  Выделим элементы правого воображаемого столбца – Qlabel «Язык для синтеза», выпадающий список QComboBox , галка Альтернативная команда QCheckBox и объект spacer (пружинка),  затем применим «Скомпоновать по вертикали» (может быть результат будет лучше если использовать «Скомпоновать по вертикали разделителем»). Команды компоновщика можно найти в контекстном меню (QtCreater 2.0.1).  Затем, выделим получившуюся группу и текстовое поле, расположенное в воображаемом левом столбце. Применим к выделению «Скомпоновать по горизонтали». Получившуюся область с объектами (объекты ограничены красной рамкой) можно выравнить и расположить в нужном месте формы.

Теперь, по аналогии создадим вторую группу объектов на форме левая колонка две кнопки (Сохранить в фаил и Голос) и правая – поле вывода сообщений (объект  QPlainTextEdit). Обратите внимание на sizePolicy для поля вывода. Свойства кнопок одинаковы.

После вертикальной и горизонтальной компоновки,  добавим вертикальный компоновщик на саму форму. В результате в инспекторе объектов должна получиться следующая иерархическая структура.

Используя Редактор действий (4)  можно задать горячие клавиши (QtCreator 2.2.1).

На этом этап создания формы завершен. Следующим шагом будет реализация задуманного функционала.

Статья на стадии разработки

Добавить комментарий