PyQT и база данных

Модератор: Модераторы разделов

Аватара пользователя
nadge
Сообщения: 1519
ОС: ArchLinux, Ubuntu 10.10

PyQT и база данных

Сообщение nadge »

Осваиваю сабж - довольно удобно реализовано, экономит место на диске с исходниками :) Но возник вопрос. У меня есть QTableView и, соответственно, QTableModel. Мне нужно чтобы при любом изменении таблицы возникал сигнал, который я бы мог обработать.

Впринципе, это видимо dataChanged(), но как я ни старался, перехватить его не получается - обработчик просто не вызывается (про метод connect я знаю). Может сигнал просто не возникает?

Буду признателен, если кто-нить даст рабочий кусок кода или еще как-то поможет решить проблему.


Код: Выделить всё

self.connect(self.model, QtCore.SIGNAL("dataChanged(const QModelIndex&,const QModelIndex&)"), self.dataChanged)


З.Ы. Qt 4.7.
Спасибо сказали:
Аватара пользователя
nadge
Сообщения: 1519
ОС: ArchLinux, Ubuntu 10.10

Re: PyQT и база данных

Сообщение nadge »

С исходной проблемой разобрался - надо было сделать:

Код: Выделить всё

self.model.setEditStrategy(QtSql.QSqlTableModel.OnFieldChange)

(у меня было выбрано OnRowChange).

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

Что это за глюк с лишним rowsInserted() и как его убрать? Или же какие сигналв использовать вместо этих?

Двойной вызов сигналов можно бы обойти каким-нибудь костылем, но хотелось бы без этого.
Спасибо сказали: