Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Qt.doc
Скачиваний:
12
Добавлен:
01.07.2025
Размер:
6 Мб
Скачать
☆

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

93

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]