crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Обновление нескольких QTableView одновременно
Tarigan
  опции профиля:
сообщение 2.7.2012, 10:21
Сообщение #1


Студент
*

Группа: Новичок
Сообщений: 11
Регистрация: 20.4.2012
Пользователь №: 3336

Спасибо сказали: 0 раз(а)




Репутация:   0  


Добрый день.
Есть 1 таблица в БД, 2 QSqlTableModel+QTableView и QSqlQuery+QTablEView подключенные к этой таблице.
//1st model
    phoneModel = new QSqlTableModel(this,db->getDB());
    phoneModel->setEditStrategy(QSqlTableModel::OnFieldChange);
    phoneModel->setTable("ORDERS");
    phoneModel->setFilter(QString("orders.status = 1");
    phoneModel->sort(COLUMN_ORDERS_ORDERDATE,Qt::AscendingOrder);
    phoneModel->select();
    dspPhoneTable->setModel(phoneModel);

    //2nd model
    backModel = new QSqlTableModel(this,db->getDB());
    backModel->setEditStrategy(QSqlTableModel::OnFieldChange);
    backModel->setTable("ORDERS");
    backModel->setFilter(QString("orders.status <> 1");
    backModel->setSort(COLUMN_ORDERS_ORDERDATE,Qt::AscendingOrder);
    backModel->select();
    dspBackTable->setModel(backModel);

    //3rd nodel
    drvModel = new QSqlQueryModel();
    drvModel->setQuery("put_query_here",db->getDB());
    drvActTable->setModel(drvModel);

Как лучше реализовать обновление информации во всех трех моделях при добавлении новой и/или изменении уже имеющейся в 1 или 2?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Tarigan
  опции профиля:
сообщение 3.7.2012, 19:28
Сообщение #2


Студент
*

Группа: Новичок
Сообщений: 11
Регистрация: 20.4.2012
Пользователь №: 3336

Спасибо сказали: 0 раз(а)




Репутация:   0  


К примеру, вот:
При добавлении записи в модель 1 срабатывает слот, подключенный к сигналу beforeInsert, в котором значение критерия для выборки в таблицах менятся с 1 на 2. Следовательно запись исчезает из модели 1 и должна появиться в модели 2 (см. 1 пост с описанием моделей). Из модели 1 она действительно исчезает, а в модели 2 появляется только при перезапуске программы. Подключенный к сигналу dataChanged слот ситуацию не спасает:
QObject::connect(phoneModel,SIGNAL(dataChanged(QModelIndex,QModelIndex)),
                     this,SLOT(slot_refreshBackTable()));

void MainWindow::slot_refreshBackTable()
{
    //update 2nd model
    this->backModel->select();
    this->dspBackTable->update();
}


Что я делаю не так?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 1.12.2024, 23:01