Самарев Р.С. - Программирование с использованием библиотеки Qt (1075627), страница 3
Текст из файла (страница 3)
Связывание главного виджета со схемой размещения выполняется вызовом hbox->setLayout(layout). Подчиненные виджеты будут отображены в порядкеих добавления (вызовы layout->addWidget).Следующие вызовы обеспечат связывание сигналов valueChanged() объектов spinBox, slider таким образом, чтобы изменение любого из них приводило к изменению другого.QObject::connect(spinBox, SIGNAL(valueChanged(int)), slider, SLOT(setValue(int)));QObject::connect(slider, SIGNAL(valueChanged(int)), spinBox, SLOT(setValue(int)));Связывание сигнала clicked() объекта btn со слотом close() главного окна приведетк тому, что по нажатию на эту кнопку, окно hbox будет закрыто.QObject::connect(btn, SIGNAL(clicked(bool)), hbox, SLOT(close()));2.2Компиляция и компоновка проектаПосле того, как cpp-файл с текстом программы создан, необходимо создать qmakeпроект для её сборки.
Для использования средств разработки, необходимо, чтобы переменные среды окружения, указывающие местоположение и тип компилятора, который будет использован при сборке Qt-проектов, были правильно определены. Во избежаниепроблем при наличии нескольких сред разработки на одном компьютере в состав Qt входит пакетный файл …\Qt\4.x.x\bin\qtvars.bat, определяющий правильные значения переменных окружения. При использовании комплекта Qt SDK директория библиотека будетразмещена в директории …\Qt\20xx.xx\qt\, а пакетный файл, определяющий системныепеременные будет называться …\Qt\20xx.xx\bin\qtenv.bat.В данной лабораторной работе с использованием ОС MS Windows работу с проектом будем осуществлять в консольном режиме. Для перехода в этот режим выбираемменю Пуск/Qt by Nokia v4.6.0 (VS2008 OpenSource)/Qt Command Prompt илиПуск/Qt SDK by Nokia v2009.05 (open source)/ Qt Command Prompt.Оглавление13Затем устанавливаем текущей ту директорию, в которой находится cpp-файл программы.
Для этого используем команду изменения директории cd Имя_директории.Для создания файла-проекта, включающего файлы текущей директории, воспользуемся специальной командой qmake -project.В текущей директории должен появиться файл ex1.pro. Содержимое этого файлаопределяет характеристики процесса сборки исполняемого файла из файлов проекта.Файл отредактируем следующим образом:TEMPLATE = app# тип исполняемого файла - .exeTARGET = ex1# имя исполняемого файла – ex1QT += guiCONFIG += release# имя поддиректории для исполняемого файла# InputSOURCES = ex1.cpp# имя исходного файла программыЗапускаем qmake ex1.pro, который на базе файла ex1.pro сформирует файл Makefile, определяющий фактический порядок сборки программы, положение компилятора инеобходимых библиотек.После того, как в текущей директории появился файл Makefile, вводим командуnmake (mingw32-make или make в зависимости от компилятора и при их наличии в текущей версии Qt).Результат сборки программы – файл ex1.exe.В процессе работы ex1.exe могут потребоваться динамические библиотекиQtCore4.dll и QtGui4.dll, которые должны находиться в путях автовызова, устанавливаемых системной переменной Path, или быть скопированы в директорию запуска приложения ex1.exe.2.3ЗаданиеЗамените в программе схему выравнивания QHBoxLayout на QVBoxLayout и зафиксируйте результат.Оглавление143Создание простого приложения в QtDesignerРассмотрим разработку прототипов диалогов в QtDesigner.
В предыдущем заданиибыли показаны простейшие способы выравнивания виджетов. QtDesigner, помимо разнообразных виджетов, позволяет использовать так называемые менеджеры компоновки, работа с которыми и будет рассмотрена в данном задании.В MS Windows исполняемый файл QtDesigner называется designer.exe и можетбыть запущен из консоли «Qt Command Prompt» по своему имени designer или черезменю Пуск/Qt SDK by Nokia v.../Tools/Qt Designer. Qt Designer входит в любой комплектQt, однако в комплекте Qt SDK может не иметь ярлыка, доступного из меню «Пуск», таккак его функции в Qt SDK дублирует QtCreator.
В этом случае можно непосредственнозапустить программу c:\Qt\xx\qt\bin\designer.exe.3.1Визуальное проектирование формы приложенияПосле запуска QtDesigner появится окно, показанное на рисунке 6. В качестве примера приложения создадим диалог без кнопок по шаблону «Dialog without Buttons».Рисунок 6 – Выбор шаблона формы в QtDesignerПосле выбора шаблона появится форма, показанная на рисунке 7. Изменим название диалога посредством редактирования свойства objectName=DialogEx2 в правой колонОглавление15ке QtDesigner. Далее необходимо сохранить форму на диске.
Для этого выберите командуменю File/Save и в директории, в которой будет находиться программа, сохраните формупод именем ex2.ui.Рисунок 7 – Редактирование формы в QtDesignerРазместим на форме элементы так, как показано на рисунке 8. Для того, чтобы поместить конкретный элемент из левой колонки, необходимо «перетащить» его мышью наформу. На этом этапе не следует стремиться ровно размещать элементы.Рисунок 8 – Создание формы приложения ex2 в QtDesignerОглавление16QtDesigner включает средство проверки полученного результата. Строго говоря,подобное средство есть и у программиста, что позволяет в своей программе динамическизагружать формы, созданные в QtDesigner, однако данный пример иллюстрирует статическое подключение формы. Режим просмотра Preview может быть активирован нажатиемкомбинации клавиш Ctrl+R (см.
рисунок 9), а также через меню Form/Preview илиForm/Preview in/…style.Рисунок 9 – Форма ex2 без средств выравниванияВызовите режим просмотра и попробуйте изменить размер формы. Должно получиться что-то похожее на рисунок 10, где границы окна закрывают графические элементы.Ясно, что в реальной программе это недопустимо. Воспользуемся так называемым менеджером компоновки (который использует средства выравнивания, рассмотренные в первом задании – классы с суффиксами Layout). Выделите пару элементов QSpinBox и QDial,после чего нажмите кнопку вертикального выравнивания элементов.
Далее выделитепару элементов QLabel – QPushButton и нажмите кнопку горизонтального выравнивания. Для элемента QTextEdit образуем пару с ранее скомпонованными QSpinBox-QDial,используя кнопку горизонтального выравнивания. В заключение, для всей формы (приэтом не выделен ни один элемент) определяем вертикальное выравнивание элементовОглавление.17Рисунок 10 – Добавление схемы выравнивания в форму ex2В итоге должны получить форму, похожую на рисунок 11.Рисунок 11 – Разметка выравнивания формы ex2Включаем режим Preview и пытаемся изменить размеры формы.
Форма должна деформироваться подобно рисунку 12, однако сейчас уже не происходит наложение границформы на внутренние элементы.Оглавление18Рисунок 12 – Изменение размеров формы ex2Изменим форму таким образом, чтобы надпись всегда находилась рядом с кнопкой,а элемент QSpinBox не был прижат к ней. Для этого необходимо перетащить элементы,изображенные пружинами, называемые Horizontal Spacer и Vertical Spacer, соответственно. Перед их размещением на форме необходимо разрушить компоновку, нажав комбинацию клавиш Ctrl-0 (Break Layout) и провести компоновку так, как показано на рисунке 13.Рисунок 13 – Добавление элементов spacer в форму ex2Проверяем результат в режиме просмотра. На рисунке 14 показан примерный видформы при изменении её линейных размеров.Рисунок 14 – Изменение размеров формы ex2 в окончательном вариантеОглавление193.2 Описание реакций на сигналыСледующим шагом является добавление реакций на действия.
QtDesigner имеетчетыре режима работы с формой:-редактирование виджетов (Edit Widgets – клавиша F3), в котором производитсяразмещение и компоновка элементов;-редактирование сигналов и слотов (Edit Signals/Slots – клавиша F4), при котором производится визуальное связывание элементов, формирующих сигналы иэлементов, получающих сигналы;-редактирование «дружеских отношений» (Edit Buddies), где производится визуальное связывание меток QLabel, в которых одна из букв отмечена знаком & сэлементами, способными принимать фокус ввода от клавиатуры.