QT 4: программирование GUI на С++ - [14]

Шрифт
Интервал

показан в виде синей пружинки.

Рис. 2.5. Qt Designer в режиме пристыкованного окна в системе Windows.

Затем передвиньте низ формы вверх, чтобы она стала короче. В результате вы получите форму, похожую на показанную на рис. 2.6. Не тратьте слишком много времени на позиционирование элементов на форме; менеджеры компоновки Qt позже выполнят точное их позиционирование.

Рис. 2.6. Форма с несколькими виджетами.

Задайте свойства каждого виджета, используя редактор свойств Qt Designer.

1. Щелкните по текстовой метке. Убедитесь, что свойство objectName (имя объекта) имеет значение «label» (текстовая метка), а свойство text (текст) установите на значение «&Cell Location» (расположение ячейки).

2. Щелкните по строке редактирования. Убедитесь, что свойство objectName имеет значение «lineEdit» (строка редактирования).

3. Щелкните по первой кнопке. Установите свойство objectName на значение «okButton» (кнопка подтверждения), свойство enabled (включена) на значение «false» (ложь), свойство default (режим умолчания) на «true» (истина), свойство text на значение «OK» (подтвердить).

4. Щелкните по второй кнопке. Установите свойство objectName на значение «cancelButton» (кнопка отмены) и свойство text на значение «Cancel» (отменить).

5. Щелкните по свободному месту формы для выбора самой формы. Установите objectName на значение «GoToCellDialog» (диалоговое окно перехода на ячейку) и windowTitle (заголовок окна) на значение «Go to Cell» (перейти на ячейку).

Теперь все виджеты выглядят привлекательно, кроме текстовой метки &Cell Location. Выберите Edit | Edit Buddies (Правка | Редактировать партнеров) для входа в специальный режим, позволяющий задавать партнеров. Щелкните по этой метке и перенесите красную стрелку на строку редактирования, а затем отпустите кнопку мышки. Теперь эта метка будет выглядеть как Cell Location и иметь строку редактирования в качестве партнера. Выберите Click Edit | Edit Widgets (Правка | Редактировать виджеты) для выхода из режима установки партнеров.

Рис. 2.7. Вид формы после установки свойств виджетов.

На следующем этапе виджеты размещаются в форме требуемым образом:

1. Щелкните по текстовой метке Cell Location и нажмите клавишу Shift одновременно со щелчком по полю редактирования, обеспечив одновременный выбор этих виджетов. Выберите в меню Form | Lay Out Horizontally (Форма | Горизонтальная компоновка).

2. Щелкните по растяжке, затем, удерживая клавишу Shift, щелкните по клавишам OK и Cancel. Выберите в меню Form | Lay Out Horizontally.

3. Щелкните по свободному месту формы, аннулируя выбор любых виджетов, затем выберите в меню функцию Form | Lay Out Vertically (Форма | Вертикальная компоновка).

4. Выберите в меню функцию Form | Adjust Size для установки предпочитаемого размера формы.

Красными линиями на форме обозначаются созданные менеджеры компоновки. Они невидимы при выполнении программы.

Рис. 2.8. Форма с менеджерами компоновки.

Теперь выберите в меню функцию Edit | Edit Tab Order (Правка | Редактировать порядок перехода по клавише табуляции). Рядом с каждым виджетом, которому может передаваться фокус, появятся синие прямоугольники. Щелкните по каждому виджету, соблюдая необходимую вам последовательность перевода фокуса, затем выберите в меню функцию Edit | Edit Widgets для выхода из режима редактирования переходов по клавише табуляции.

Рис. 2.9. Установка последовательности перевода фокуса по виджетам формы.

Для предварительного просмотра спроектированного диалогового окна выберите в меню функцию Form | Preview (Форма | Предварительный просмотр). Проверьте последовательность перехода фокуса, нажимая несколько раз клавишу табуляции. Нажмите одновременно клавиши Alt+C для перевода фокуса на строку редактирования. Нажмите на кнопку Cancel для прекращения работы.

Сохраните спроектированное диалоговое окно в файле gotocelldialog.ui в каталоге с названием gotocell и создайте файл main.cpp в том же каталоге с помощью обычного текстового редактора.

>01 #include

>02 #include

>03 #include "ui_gotocelldialog.h"


>04 int main(int argc, char *argv[])

>05 {

>06 QApplication app(argc, argv);

>07 Ui::GoToCellDialog ui;

>08 QDialog *dialog = new QDialog;

>09 ui.setupUi(dialog);

>10 dialog->show();

>11 return app.exec();

>12 }

Теперь выполните команду qmake для создания файла с расширением .pro и затем создайте файл makefile (команды qmake —project; qmake gotocell.pro). Программе qmake «хватит ума» обнаружить файл пользовательского интерфейса gotocelldialog.ui и сгенерировать соответствующие команды для вызова uic — компилятора пользовательского интерфейса, входящего в состав средств разработки Qt. Компилятор uic преобразует gotocelldialog.ui в инструкции С++ и помещает результат в ui_gotocelldialog.h.

Полученный файл ui_gotocelldialog.h содержит определение класса Ui::GoToCellDialog, который содержит инструкции С++, эквивалентные файлу gotocelldialog.ui. В этом классе объявляются переменные—члены, в которых содержатся дочерние виджеты и менеджеры компоновки формы, а также функция setupUi(), которая инициализирует форму. Сгенерированный класс выглядит следующим образом:


Рекомендуем почитать
Pro Git

Разработчику часто требуется много сторонних инструментов, чтобы создавать и поддерживать проект. Система Git — один из таких инструментов и используется для контроля промежуточных версий вашего приложения, позволяя вам исправлять ошибки, откатывать к старой версии, разрабатывать проект в команде и сливать его потом. В книге вы узнаете об основах работы с Git: установка, ключевые команды, gitHub и многое другое.В книге рассматриваются следующие темы:основы Git;ветвление в Git;Git на сервере;распределённый Git;GitHub;инструменты Git;настройка Git;Git и другие системы контроля версий.


Java 7

Рассмотрено все необходимое для разработки, компиляции, отладки и запуска приложений Java. Изложены практические приемы использования как традиционных, так и новейших конструкций объектно-ориентированного языка Java, графической библиотеки классов Swing, расширенной библиотеки Java 2D, работа со звуком, печать, способы русификации программ. Приведено полное описание нововведений Java SE 7: двоичная запись чисел, строковые варианты разветвлений, "ромбовидный оператор", NIO2, новые средства многопоточности и др.


MFC и OpenGL

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


Симуляция частичной специализации

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


Обработка событий в С++

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


Питон — модули, пакеты, классы, экземпляры

Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.