- •Кросс-платформенное программирование
- •Введение
- •1. Основы работы с qt.
- •Теоретическое введение
- •Виджеты
- •3.1. Основы работы с Qt Designer
- •Контрольные вопросы
- •2. Создание графического интерфейса с помощью библиотеки классов qt
- •Теоретическое введение
- •Практическая часть
- •2.2. Создание динамически изменяемых окон
- •2.2.1 Создание формы
- •2.2.2. Подключение формы
- •2.2.3. Наполнение формы
- •2.2.4. Создание динамически изменяемых окон
- •2.3. Установка пиктограммы приложения
- •2.3.1. Установка пиктограммы приложения в Windows
- •Контрольные вопросы
- •3. Разработка текстового редактора в qt.
- •Теоретическое введение
- •1. Подключить библиотеку для работы с файлами:
- •2. Узнать имя файла, используя стандартный диалог (qFileDialog).
- •3. Создать объект файла (qFile).
- •4. Открыть файл (qFile).
- •5. Создать поток для ввода/вывода (qDataStream или qTextStream) и связать его с файлом.
- •6. Считать/записать данные с использованием потока (qDataStream или qTextStream).
- •7. Закрыть файл (qFile).
- •Практическая часть
- •3.1. Создание полноценного текстового редактора
- •3.1.1. Создание меню
- •3.1.2. Редактирование действий
- •3.2. Добавление средств форматирования в текстовый редактор
- •3.2.1. Создание средств форматирования
- •4.2.2. Работа с панелью инструментов
- •3.2.3. Наполнение действий по форматированию функциональностью
- •3.2.4. Самостоятельная работа
- •3.3. Дополнительные возможности
- •3.3.1. Цвет
- •3.3.2. Работа с принтером
- •3.3.3. Добавление стилей, шрифтов их размеров
- •3.3.4. Диалог поиска
- •Контрольные вопросы
- •4. Работа со стилями и создание переносимого мобильного приложения
- •Теоретическое введение
- •Практическая часть
- •4.1. Работа со стилями
- •Контрольные вопросы
- •5. Интернационализация программ в qt.
- •Теоретическое введение
- •Практическая часть
- •5.1. Русификация
- •5.2. Qt Linguist. Создание переводимого интерфейса приложения
- •5.3. Динамическое переключение языков.
- •Контрольные вопросы
- •6. Разработка медиаплеера на qt 5.2
- •Практическая часть
- •6.1. Разработка формы
- •6.2. Наполнение действий функционалом
- •7. Работа с 2d-графикой в qt
- •Практическая часть
- •8. Работа с базами данных в qt
- •Теоретическое введение
- •Практическая часть
- •8.1. Подготовка к подключению бд
- •8.2. Подключение с базе данных и выполнение sql-запросов
- •8.3. Реляционные бд в Qt
- •8.4. Сортировка и поиск по бд
- •Кросс-платформенное программирование
- •Св. План, 2014
- •61070, Харьков–70, ул. Чкалова, 17
- •61070, Харьков–70, ул. Чкалова, 17
3.3.4. Диалог поиска
Вы уже должны были подключить диалог поиска, но пока он у вас не функционирует.
Теперь Ваша задача состоит в том, чтобы он искал заданные слова. ;-)
P.S. В качестве примера используйте программы «Extension example» и «Text Finder example».
Рис. 3.16. Вид полностью работоспособного текстового редактора
Реализация поиска.
Поиск стартует по нажатию на кнопку «Найти». Она должна быть недоступна, если в поле для поиска ничего не введено (см. прошлую лабораторную).
Для того, чтобы работать с текстовым полем из другого класса (класса диалога поиска) следует создать переменную такого же класса (QTextEdit) и передать в нее указатель на оригинал:
void Find_Dialog::SetEditor(QTextEdit *ed)
{
textEdit2=ed;
}
Запустить ее следует после создания диалога поиска.
Дальнейшая реализация такая же, как и в примере (который следует немного подправить, дабы все работало).
Контрольные вопросы
1. Какие стандартные процедуры есть в Qt для работы с файлами?
4. Работа со стилями и создание переносимого мобильного приложения
Цель работы – научиться работе со стилями; освоить навыки создания полноценного переносимого кросплатформенного программного продукта с помощью Qt.
Теоретическое введение
Один из немаловажных аспектов при программировании с использованием библиотеки Qt – это управление видом и поведением приложения (look & feel). Ввиду того, что Qt-приложения создаются для большого числа платформ, необходим механизм для изменения их вида и поведения. Это позволяет добиться, чтобы его внешний вид не выбивался из колеи при запуске в какой-либо операционной системе, и не создавалось впечатление того, что программа "чужая" на этой платформе.
В Qt внешний вид компонентов может быть свободно изменен, и это можно использовать для того, чтобы разнообразить внешний вид приложения, если вы относитесь к группе программистов, считающих стандартный вид неподходящим для своих программ. Например, при написании компьютерной игры вы наверняка захотите большей дизайнерской свободы и попробуете придать элементам управления новый вид. К изменению стиля можно прибегнуть и в том случае, когда нужно добиться того, Чтобы ваши программы узнавали по внешнему виду.
Конечно, можно создать классы виджетов, которые будут иметь свой собственный облик, отличный от стандартного. Но это неудобно, так как каждый раз придется реализовывать новые классы и изменять исходный код. Qt предоставляет специальные классы стилей, позволяющие изменять внешний вид и поведение для любых классов виджетов. Стили программы можно изменять даже в процессе ее работы, а это значит, что пользователю можно предоставить в меню целый список стилей, чтобы он смог выбрать оптимальный для себя. Стили можно создавать самому или использовать уже готовые, встроенные в библиотеку Qt.
Возможность реализации и использования классов стилей, не зависящих от кода программы, дает большую свободу, позволяющую разделить разработку проекта, как минимум, на две команды, которые могут работать независимо друг от друга. Одна команда может работать над кодом самой программы, а другая над ее дизайном. Созданные второй командой классы или CSS-файлы стилей могут использоваться и в других Qt-проектах.
В контексте Qt стиль – это класс, унаследованный от QStyle и реализующий возможности для рисования рамок, кнопок, растровых изображений и т. д. делает каждый виджет ответственным за свое отображение, что повышает скорость отображения и гибкость.
Таперь поговорим о более интересном и познавательном – о переносе вашего ПО на другие компьютеры.
Это важно: как бы это было не странно, но все же удосужтесь прочитать теорию, которая разместилась ниже – здесь содержатся весьма важные сведенья.
Допустим, Вы написали приложение, и оно успешно компилируется и запускается в Qt Creator'e. А Вам нужно выпустить готовое приложение, которое можно будет запускать отдельно, как любую другую программу. Как это сделать?
Для этого необходимо откомпилировать проект в режиме релиза. И потом вместе с Вашим приложением нужно прикладывать файлы:
mingwm10.dll
libgcc_s_dw2-1.dll
QtCore4.dll
QtGui4.dll
Остальное зависит от того, какие еще опции Вы укажете к QT += .... в файле .pro.
Так же, если, например, работаете с картинками, то ещё могут понадобится dll'ки qgif4.dll, qico4.dll, qjpeg4.dll и т.п... но их уже надо размещать не в ту же папку, а создать там папку imageformats и туда уже их записывать.
Это полезно: часто возникает вопрос – откуда брать эти библиотеки? Ответ: из каталога, где установлен Qt, например: «C:\QtSDK\Desktop\Qt\4.8.0\mingw\bin».
Это интересно: если собрано в режиме релиза, то брать надо библиотеки без d на конце имени файла: QtGUI.dll, QtCore.dll и т.д., если собрано в debug режиме то QtGUId.dll, QtCored.dll и т.д.
Или можно перекомпилировать сам Qt по инструкции Отучение Qt от mingw10.dll, libgcc_s_dw2-1.dll и других Qt***.dll но тогда сам exe'шник будет размером больше 10 МБ... но для форматов картинок dll'ки всё равно будут нужны отдельно.
Т.к. для этого необходимо перекомпилировать Qt, то делать этого мы не будем.
На всякий случай выкладываю для вас эту инструкцию.
Сборка статической Qt (MinGW) под винду, с поддержкой OpenSSL:
1. Скачать и установить OpenSSL (для примера в папку Q:\OpenSSL-Win32) (отсюда)
2. Скачать и установить QtSDK (для примера в папку Q:\QtSDK)
3. Скачать исходники Qt http://download.qt.nokia.com/qt/sour...-src-4.7.4.zip и распаковать их в папку (заменить имеющиеся там исходники от установки): Q:\QtSDK\QtSources\4.7.4\
4. Скопировать:
Файлы:
Q:\OpenSSL-Win32\lib\libeay32.lib
Q:\OpenSSL-Win32\lib\ssleay32.lib
в папку:
Q:\QtSDK\QtSources\4.7.4\lib\
Файлы:
Q:\OpenSSL-Win32\lib\MinGW\libeay32.a
Q:\OpenSSL-Win32\lib\MinGW\libeay32.def
Q:\OpenSSL-Win32\lib\MinGW\ssleay32.a
Q:\OpenSSL-Win32\lib\MinGW\ssleay32.def
в папку:
Q:\QtSDK\Desktop\Qt\4.7.4\mingw\lib\
Папку:
Q:\OpenSSL-Win32\include\
в папку:
Q:\QtSDK\QtSources\4.7.4\include
т.е. папка Q:\QtSDK\QtSources\4.7.4\include должна будет содержать в себе подпапку Q:\QtSDK\QtSources\4.7.4\include\openssl
5. Открыть блокнотом файл:
Q:\QtSDK\QtSources\4.7.4\mkspecs\win32-g++\qmake.conf
найти строку, содержащую: QMAKE_LFLAGS
удалить ее полностью, и вместо нее вставить:
QMAKE_LFLAGS = -static -static-libgcc -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc
и сохранить файл.
6. Запустить консоль Qt из «Пуск»→«Программы»→«QtSDK»→«Desktop»→«Qt 4.7.4 for Desktop (MinGW)»
В консоли перейти в папку: Q:\QtSDK\QtSources\4.7.4\ с помощью команд:
«Q:» (без кавычек, нажать Enter)
«cd Q:\QtSDK\QtSources\4.7.4\» (без кавычек, нажать Enter)
7. Сконфигурировать исходники Qt командой:
configure -static -debug-and-release -no-exceptions -openssl-linked -nomake demos -nomake examples
Ответить на вопросы по лицензии (лицензия OpenSource)
8. Дождаться конца конфигурирования и собрать библиотеку командой (в той же открытой консоли):
mingw32-make sub-src
и дождаться окончания сборки, после чего консоль можно закрывать.
9. Запустить QtCreator, зайти в меню:
«Инструменты» → «Параметры» и в левом меню выбрать пункт Qt4
Кнопкой «Добавить» - добавить созданную статическую сборку, т. е. указать в открывшемся окне файл: Q:\QtSDK\QtSources\4.7.4\bin\qmake.exe
и дать ей свое имя (к примеру «Qt 4.7.4 for Desktop - MinGW 4.4 (Static)»)
Раскрыть область «Подробнее» и нажать кнопку «Собрать все»
Открыть проект, зайти в его свойства (слева меню «Проекты») и добавить новую конфигурацию сборки с новым именем (из п.13.)
Выбрать тип сборки Релиз (из Релиз или Дебаг)
Можно собирать проекты.
Видео как это делалось: http://narod.ru/disk/start/01.dl14sg...SetupVideo.zip
