воскресенье, 28 сентября 2008 г.

Реализация раздела "Заказчики". Часть 3

3. "Корзина"

Таблица "корзина" реализуется аналогично таблице "все заказчики", с единственным отличием - в условии фильтрации proxyModel:

proxyModel->setFilterRegExp(QRegExp("0", Qt::CaseInsensitive, QRegExp::FixedString)); 
proxyModel->setFilterKeyColumn(10);

- после чего в таблице "корзина" будут отображаться записи, в которых значение колонки "active" равно "0". Таким образом, все что нужно сделать для того, чтобы переместить запись заказчика в корзину - изменить значение "active":

customerform *page = (customerform*) ui.tabWidget->currentWidget(); // получаем указатель на текущую закладку в tabWidget заказчиков
QSqlRecord record = model->record(page->mapper->currentIndex()); // получаем из модели запись текущего заказчика
record.setValue("active", "0"); // устанавливаем active в ноль
model->setRecord(page->mapper->currentIndex(), record); // обновляем запись текущего заказчика
model->submitAll();
ui.tabWidget->removeTab(ui.tabWidget->currentIndex()); // удаляем текущую вкладку 

Востановим запись из корзины:

QModelIndex index = ui.tableView->currentIndex(); // индекс выделенной строки в таблице "корзина"
QModelIndex index2 = proxyModel->mapToSource(index); // переводим его из proxyModel в индекс исходной модели
model->setData(cust_model->index(index2.row(), 9), "1"); // изменяем active 
model->submitAll(); 

Удаляем запись навсегда:

QModelIndex index = ui.tableView->currentIndex(); // индекс выделенной строки в таблице "корзина"
QModelIndex index2 = proxyModel->mapToSource(index); // переводим в индекс исходной модели
model->removeRow(index2.row()); // удаляем строку из модели
model->submitAll(); // обновляем базу данных

Комментариев нет: