Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 18, 2012 16:06:04

Red_baron
Зарегистрирован: 2012-08-30
Сообщения: 30
Репутация: +  0  -
Профиль   Отправить e-mail  

Модель-представление PyQt

Здравствуйте.
Я создал модель, таблицу, кнопку

model1 = QtGui.QStandardItemModel(3, 2)
tabl1 = QtGui.QTableView()
button1 = QtGui.QPushButton("Сохранить")

Затем я, допустим, в программе руками заполняю ячейки таблицы.
Как сделать, чтобы изменения внесенные в таблицу сохранились в модели при нажатии на кнопку?
Заранее, спасибо.

Отредактировано Red_baron (Окт. 18, 2012 16:06:40)

Офлайн

#2 Окт. 18, 2012 18:15:43

reclosedev
От: Н.Новгород
Зарегистрирован: 2012-03-29
Сообщения: 870
Репутация: +  173  -
Профиль   Отправить e-mail  

Модель-представление PyQt

Не совсем понял вопрос. Если для view назначить модель:

tabl1.setModel(model1)
то данные автоматически будут записываться в модель.

Офлайн

#3 Окт. 23, 2012 08:58:47

Red_baron
Зарегистрирован: 2012-08-30
Сообщения: 30
Репутация: +  0  -
Профиль   Отправить e-mail  

Модель-представление PyQt

Решил не создавать новую тему, так как продолжаю воевать с теми же таблицами.

tabl1 = QtGui.QTableView()
model1 = QtGui.QStandardItemModel(3, 2)
model2 = copy.deepcopy(model1)
tabl1.setModel(model2)

В последней строке показывает ошибку.

Видимо я что-то не понимаю. Как правильно создать копию модели?

Офлайн

#4 Окт. 23, 2012 09:12:55

reclosedev
От: Н.Новгород
Зарегистрирован: 2012-03-29
Сообщения: 870
Репутация: +  173  -
Профиль   Отправить e-mail  

Модель-представление PyQt

Red_baron
Видимо я что-то не понимаю. Как правильно создать копию модели?
Вряд ли объекты Qt поддерживают копирование, тем более через Python. Для копирования придется создать новый инстанс модели и построчно в него записать данные.

Но что вы пытаетесь сделать, зачем нужна копия модели?

Офлайн

#5 Окт. 23, 2012 09:55:25

Red_baron
Зарегистрирован: 2012-08-30
Сообщения: 30
Репутация: +  0  -
Профиль   Отправить e-mail  

Модель-представление PyQt

reclosedev
Но что вы пытаетесь сделать, зачем нужна копия модели?

В основном окне программы есть таблица, в которую выводится модель.

Есть кнопка “Редактировать”, при нажатии на которую появляется диалоговое окно с таблицей и кнопками “Сохранить” и “Отмена”. В таблицу выводится та же модель (только все колонки и их можно редактировать). При нажатии на “Сохранить” изменения в модели сохраняются, соответственно при нажатии на “Отмена” нет.

Однако модель и представление связаны, и получается, что при редактировании таблицы в диалоговом окне изменяется модель и таблица в основном окне. Т. е. при нажатии “Отмена” отката не происходит, так как изменение уже произошло.

Поэтому я решил сделать копию модели, т.е. создается копия модели и уже она передается в диалоговое окно. Если пользователь нажимает “Сохранить”, то модель приравниваем копии модели. Если “Отмена”, то не приравниваем. К сожалению, не прокатило

Офлайн

#6 Окт. 23, 2012 10:33:10

reclosedev
От: Н.Новгород
Зарегистрирован: 2012-03-29
Сообщения: 870
Репутация: +  173  -
Профиль   Отправить e-mail  

Модель-представление PyQt

Тогда или копировать все поэлементно или Using Undo/Redo with Item Views

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version