- •Кросс-платформенное программирование
- •Введение
- •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
8.4. Сортировка и поиск по бд
1. Сортировка.
Помимо выполнения классических SQL-запросов на сортировку данных, последовательность отображаемых данных можно изменить посредством виджета.
Делается это вполне элементарно – перейдите в режим дизайна и в инспекторе свойств поставте галочку напротив значения sortingEnabled для экземпляра класса QTableView (рис. 8.19).
Рисунок 8.19 – Установка возможности сортировки по имени столбца
Теперь, щелкнув по заголовку окна, вы сможете отсортировать данные.
2. Контроль диапазона ввода.
В режиме дизайна добавьте Double Spin Box (из раздела Input Widgets) для поля, отвечающего за средний балл, если вы этого еще не сделали раньше.
В инспекторе свойств поменяйте, например, максимальное значение и шаг – измененные параметры при этом подкрасятся жирным шрифтом (рис. 8.20).
Рисунок 8.20 – Контроль диапазона ввода для Double Spin Box
Для экземпляров класса QLineEdit длина текста может быть ограничена с помощью maxLength(). Для текста можно задать условия, используя validator() или inputMask(), либо оба их.
Сначала его необходимо описать в классе:
QRegExpValidator *exp;
Затем в конструкторе установить для определенного поля:
QRegExp regExp("[A-Za-zА-Яа-яЁё'-]{20}");
exp= new QRegExpValidator(regExp,this);
ui->nameEdit->setValidator(exp);
В приведенном выше примере маска устанавливается для поля с именем и позволяет вводить лишь приведенные выше символы, включая букву «ё», апостроф и дефис для сложных имен. {20} – показывает ограничение на количество вводимых символов, его можно задать также через инспектор свойств (поле maxLenght).
Следует помнить, что для приведения типов используются методы:
.toString() в строку;
.toDouble() в вещественное;
.toInt() в целое.
Самостоятельная работа:
– реализуйте контроль ввода для всех редактируемых полей;
3. Поиск.
Добавьте на главное окно приложения экземпляр класса QLineEdit и реализуйте реакцию на изменение текста в нем:
if(ui->search_line->text().size()==0){
model->setFilter("");
}
else{
model->setFilter(QString("firstname LIKE '%%1%'").arg(ui->search_line->text()));
}
Самостоятельная работа:
– реализуйте поиск по нескольким полям.
КАРАТАНОВ АЛЕКСАНДР ВЛАДИМИРОВИЧ
ЕРЕМЕЕВ НИКОЛАЙ БОРИСОВИЧ
Кросс-платформенное программирование
Редактор ??????????
Компьютерная верстка ????????
Св. План, 2014
Подписано в печать ??.??.2012
Формат 60
84
.
Бум. офс. №2. Офс. печ.
Усл. печ. л. 3,2. Уч.-изд. л. 3,63. Т. 50 экз. Заказ ???. Цена свободная
Национальный аэрокосмический университет им. Н.Е. Жуковского
«Харьковский авиационный институт»
61070, Харьков–70, ул. Чкалова, 17
http://www.khai.edu
Издательский центр «ХАИ»
61070, Харьков–70, ул. Чкалова, 17
izdat@khai.edu
