Russian Qt Forum

Qt => Model-View (MV) => Тема начата: integer005 от Февраль 24, 2011, 13:48



Название: QSqlRelationalTableModel и самописный делегат
Отправлено: integer005 от Февраль 24, 2011, 13:48
Назначение программы: перехватывает сообщения, смотрит адрес отправителя, лезет в БД и смотрит адреса назначения и перенаправляет сообщение туда.

Есть 3 таблицы в бд mysql:
1-я: id_sender, адрес отправителя.
2-я: id_receiver, адрес назначения, ip адрес.
3-я: id_sender,id_receiver (так как отношение - многие ко многим)

Есть клиент к БД, использую QSqlRelationalTableModel, в QTableView отображаю (адрес_отправителя, адрес_назначения).
Использую стандартный QSqlRelationalDelegate:
    ui->tableView->setItemDelegate(new QSqlRelationalDelegate(ui->tableView));
Все нормально работает: добавляет, удаляет элементы из QTableView и из бд.

Задача:
Пусть в 3-ей таблице есть такие значения:

 1 а
 1 б
 2 а
 3 в

Поскольку, использую делегат, то при добавлении новой строки, я выбираю значения из выпадающих списков. Пусть в 1-м поле я задал значение "2". Для второго поля хочу чтобы выпадал не весь список а,б,в (поскольку строка "2 а" уже есть, а только б,в).

Вопрос: Я должен наследовать QSqlRelationalDelegate и перегружать какую функцию, чтоб выпадал не весь список, а только нужная часть.

P.S. В самом делегате нужный запрос к БД я составлю. Вопрос только что перегружать?