Помимо выполнения классических 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()));