Главная » Все файлы » Просмотр файлов из архивов » PDF-файлы » Самарев Р.С. - Программирование с использованием библиотеки Qt

Самарев Р.С. - Программирование с использованием библиотеки Qt, страница 2

PDF-файл Самарев Р.С. - Программирование с использованием библиотеки Qt, страница 2 Языки интернет-программирования (17406): Книга - 5 семестрСамарев Р.С. - Программирование с использованием библиотеки Qt: Языки интернет-программирования - PDF, страница 2 (17406) - СтудИзба2017-12-28СтудИзба

Описание файла

PDF-файл из архива "Самарев Р.С. - Программирование с использованием библиотеки Qt", который расположен в категории "". Всё это находится в предмете "языки интернет-программирования" из 5 семестр, которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "книги и методические указания", в предмете "языки интернет-программирования" в общих файлах.

Просмотр PDF-файла онлайн

Текст 2 страницы из PDF

MOC обрабатывает исходный текст программы,подставляя вместо специфических конструкций реализацию заказанных свойств на С++.Соответственно на выходе MOC получается исходный код С++.Компиляция и сборка программы осуществляется компилятором C++ и компоновщиком, доступными в рамках платформы, где осуществляется сборка (см. рисунок 1).#include<имя>_moc.cpp<имя>.h(Q_OBJECT,slots, signals)moc(Meta ObjectCompiler)реализациявспомогательныхметодов Qt<имя>.cpp(реализацияформы классамиQt )C++ компилятор<имя>[.exe]КомпоновшикИсполняемаяпрограммаРисунок 1 – Схема сборки приложения, реализованного вручнуюК таким средствам в частности относятся сигналы и слоты, поддержка которых дляконкретного диалога также генерируется автоматически в коде отдельной программыC++.1.1 Сигналы и слотыКлючевым механизмом взаимодействия объектов в Qt являются сигналы и слоты.Каждый объект, интегрированный в систему управления Qt, т.е.

описанный какQ_OBJECT, может иметь типизированные слоты, обеспечивающие прием и обработку типизированных сигналов от других объектов, и собственные сигналы, прием которых мо-Оглавление7гут осуществлять другие объекты. Связь между сигналами и слотами конкретных объектов устанавливается посредством функции connect(…) (см. рисунок 2).Декларация сигналов и слотов осуществляется в теле класса с помощью ключевыхслов signals и slots, воспринимаемых компилятором moc. Если необходимо предотвратитьиспользование указанных ключевых слов, встречающихся в других библиотеках, то вместо них используют ключевые слова Q_SIGNALS, Q_SLOTS.По правилам Qt один слот может принимать несколько сигналов, а один сигналтранслироваться на несколько слотов.

Причем во взаимодействии участвуют не классы, аконкретные объекты, поэтому схема передачи сигналов к слотам может быть в любой момент динамически изменена.Object1connect(Object1, signal1, Object2, slot1)connect(Object1, signal1, Object2, slot2)signal1signal2Object2signal1slot1slot2Object3Object4signal1connect(Object1, signal1,Object4, slot1)slot1connect(Object3, signal1, Object4, slot3)slot1slot2slot3Рисунок 2 – Схема связывания сигналов и слотов объектовСледует отметить, что механизм слотов не исключает возможности использованиясредств наследования и полиморфизма языка C++, так что любой класс Qt может бытьпереопределен.1.2Использование QtDesignerПри необходимости быстрого получения результата, проведения экспериментов поразмещению объектов, общей оценки интерфейса возможно использование специальногоредактора интерфейсов QtDesigner.

QtDesigner не накладывает никаких ограничений насредства разработки, поскольку интерфейс, созданный им, в конечном счете будет преобразован компилятором uic в код программы на языке C++, обеспечивающий созданиеименно этого интерфейса (см. рисунок 3).Оглавление8#includeФорма<имя>Qt Designer<имя>.hдекларациякласса потомкаQWidget<имя>.uiреализациявспомогательныхметодов Qt<имя>.cppреализацияметодов классаXML-описаниеформыuic(User interfacecompiler)<имя>_moc.cppmoc(Meta ObjectCompiler)#includeC++ компиляторui_<имя>.h<имя>[.exe]реализацияконструктораформы setupUiКомпоновшикИсполняемаяпрограммаРисунок 3 – Схема сборки приложения с формами, сделанными в QtDesignerЭто позволяет также использовать QtDesigner для обучения принципам программирования Qt и размещения элементов в форме, т.к.

результирующий код является доступным и использует те же классы Qt, которые необходимы при ручной разработке.При использовании QtDesigner описание поведения, т.е. слотов, осуществляетсяпрограммистом в отдельном файле. В Qt3.x такой файл имеет суффикс .ui.h, а в Qt4.x – .h.Сформированный QtDesigner файл .ui представляет собой XML-описание диалога.По созданному .ui – описанию user interface compiler (uic) генерирует код программы наязыке C++, где создание диалога осуществляется классами Qt. В Qt3.x формируется класспотомок QWidget, в Qt4.x формируется самостоятельный код, обеспечивающий созданиеформы по вызову метода setupUi().Диалоги, созданные в QtDesigner также могут подключаться в программу динамически посредством класса QFormBuilder или QWidgetFactory::create("form.ui") в Qt3.x безнеобходимости генерации и компиляции кода их создания на С++.1.3Система документацииБиблиотека Qt снабжена системой документации QtAssistant, реализованной единообразно для всех платформ, на которых возможна разработка с использованием этой библиотеки.

Внешний вид приложения QtAssistant представлен на рисунке 4.Оглавление9Рисунок 4 – Справочная документация – приложение QtAssistantДля ОС Windows исполняемый файл системы документации имеет имяassistant.exe, по которому его можно запустить из консоли «Qt Command Prompt».QtAssistant предоставляет возможность навигации по разделам, по индексному указателю, а также нахождения необходимой фразы, в том числе включающей имена классови/или методов, по контексту во всех статьях документации. Документация предоставляетнесколько вариантов группировки классов и функций библиотеки, что позволяет быстронайти классы для работы, например с сигналами и слотами, с графикой, классы контейнеры и пр.Поскольку Qt поставляется в виде исходных тестов, в качестве примеров разработки могут быть использованы как эти исходные тексты, так и многочисленные примеры, входящие в комплект поставки Qt.

Исходные тексты располагаются в директории…\Qt\4.x.x\src.Примерырасполагаютсявдиректориях…\Qt\4.x.x\examplesи…\Qt\4.x.x\demos. В комплекте Qt SDK префикс имени директории …\Qt\4.x.x меняется на…\Qt\20xx.xx\qt\..Документацию на русском языке можно взять на сайте http://doc.crossplatform.ru/qt/Оглавление102 Создание простого приложенияНа рисунке 5 показан внешний вид простого приложения, в котором предлагаетсяввести возраст с использованием одного из трех вариантов ввода:1) непосредственного ввода числа,2) посредством стрелок (элемент типа QSpinBox), последовательно увеличивающих или уменьшающих значение,3) с помощью специального ползунка (слайдера – элемент типа QSlider).Кроме того, задано верхнее ограничение вводимого возраста, что должно быть корректно отработано слайдером в крайних положениях, а изменение значения любым способом должно синхронизировать его положение.Рисунок 5 – Внешний вид приложения ex12.1Создание исходного кода проектаСоздадим директорию ex1, в которую запишем файл ex1.cpp, содержащий следующий код.

Для этого можно воспользоваться любым текстовым редактором, напримерБлокнот или Notepad.#include <QApplication>#include <QHBoxLayout>#include <QVBoxLayout>#include <QSlider>#include <QSpinBox>#include <QPushButton>#include <QTextCodec>// Преобразуем входную последовательность символов в кодировку UNICODE#define RUS( str ) codec->toUnicode(str)int main(int argc, char *argv[]){QApplication app(argc, argv);// Обеспечиваем перекодировку русских букв из кодировки,// в которой написана программа.// "Windows-1251" - для Windows, "KOI8-R" - Linux и т.д.QTextCodec * codec = QTextCodec::codecForName("Windows-1251");Оглавление11// Создаем главное окноQWidget *hbox = new QWidget();hbox->setWindowTitle( RUS("Введите Ваш Возраст") );QSpinBox *spinBox = new QSpinBox( hbox );QSlider *slider = new QSlider(Qt::Horizontal, hbox );spinBox->setRange(0, 130);slider->setRange(0, 130);spinBox->setValue(35);QPushButton * btn = new QPushButton( RUS("Завершение"), hbox );//***************************************************************************QHBoxLayout *layout = new QHBoxLayout; // выравнивание по горизонтали//QVBoxLayout *layout = new QVBoxLayout; // выравнивание по вертикалиlayout->setContentsMargins(5,5,5,5);// устанавливаем внешние границыlayout->setSpacing(5); // устанавливаем интервал элементов внутриhbox->setLayout(layout);// связываем layout с hbox// устанавливаем порядок следования элементовlayout->addWidget(spinBox);layout->addWidget(slider);layout->addWidget(btn);//***************************************************************************// связываем сигнал изменения spinBox со слотом sliderQObject::connect(spinBox, SIGNAL(valueChanged(int)),slider, SLOT(setValue(int)));// связываем сигнал изменения slider со слотом spinBoxQObject::connect(slider, SIGNAL(valueChanged(int)),spinBox, SLOT(setValue(int)));// связываем сигнал нажатия btn со слотом close главного окнаQObject::connect(btn, SIGNAL(clicked(bool)),hbox, SLOT(close()));hbox->show();// отображаем окноreturn app.exec();// запускаем цикл обработки сообщений}В приведенной программе объект типа QApplication обеспечивает управление всеми ресурсами приложения, а также обработку событий, поступающих от операционнойсистемы.Оглавление12По терминологии UNIX и Qt, визуальные объекты – элементы графического интерфейса пользователя называются виджетами (widget – window gadget) и являются потомками класса QWidget.

Любой из них может стать главным окном или быть использовандругим виджетом, выполняющим роль контейнера. В представленном выше примере виджет hbox назначается главным окном, а его отображение обеспечивается вызовом функции hbox->show(). В главном окне (виджете) размещено три подчиненных виджета –объекты spinBox и slider типов QSpinBox и QSlider, а также btn типа QPushButton(кнопка). Для каждого виджета может быть выбрана одна схема размещения подчиненныхвиджетов (Layout). В частности для hbox используем схему горизонтального выравнивания QHBoxLayout * layout.

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5168
Авторов
на СтудИзбе
438
Средний доход
с одного платного файла
Обучение Подробнее