Найти - Пользователи
Полная версия: Модель-представление PyQt
Начало » GUI » Модель-представление PyQt
1
Red_baron
Здравствуйте.
Я создал модель, таблицу, кнопку

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

Затем я, допустим, в программе руками заполняю ячейки таблицы.
Как сделать, чтобы изменения внесенные в таблицу сохранились в модели при нажатии на кнопку?
Заранее, спасибо.
reclosedev
Не совсем понял вопрос. Если для view назначить модель:
tabl1.setModel(model1)
то данные автоматически будут записываться в модель.
Red_baron
Решил не создавать новую тему, так как продолжаю воевать с теми же таблицами.
tabl1 = QtGui.QTableView()
model1 = QtGui.QStandardItemModel(3, 2)
model2 = copy.deepcopy(model1)
tabl1.setModel(model2)

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

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

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

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

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

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

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

Поэтому я решил сделать копию модели, т.е. создается копия модели и уже она передается в диалоговое окно. Если пользователь нажимает “Сохранить”, то модель приравниваем копии модели. Если “Отмена”, то не приравниваем. К сожалению, не прокатило
reclosedev
Тогда или копировать все поэлементно или Using Undo/Redo with Item Views
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB