Страница 3 из 4
Re: Создание собственных макетов
Добавлено: 28 ноя 2012, 14:00
dab
yellow-sky писал(а):И зачем усложнять процесс, если на панели есть специальная кнопка, выбрав в которой нужное действие, можно кликать по объектам??
Я так понимаю, что и вопрос то был собственно в том, как создать такое действие, активирующее пользовательскую форму для редактирования (name.ui)
Аналог, скажем, "Получить ID объекта", QtGui.QMessageBox.information(None, "Feature id", "feature id is [% $id %]"), только не QtGui.QMessageBox а форму созданную в Designer.
Re: Создание собственных макетов
Добавлено: 28 ноя 2012, 14:13
DruzhA
dab писал(а):Я так понимаю, что и вопрос то был собственно в том, как создать такое действие, активирующее пользовательскую форму для редактирования (name.ui)
Аналог, скажем, "Получить ID объекта", QtGui.QMessageBox.information(None, "Feature id", "feature id is [% $id %]"), только не QtGui.QMessageBox а форму созданную в Designer.
Абсолютно точно, dab! Может, конечно, есть и другие варианты...?!
Re: Создание собственных макетов
Добавлено: 28 ноя 2012, 14:21
DruzhA
Похоже, вопрос сводится к: что прописать в свойствах слоя-действия вместо QtGui.QMessageBox, чтобы открыть форму name.ui?
Re: Создание собственных макетов
Добавлено: 28 ноя 2012, 14:30
DruzhA
Максим Дубинин писал(а):так
пишите же
Как времечко появится - займусь!
Re: Создание собственных макетов
Добавлено: 28 ноя 2012, 14:39
dab
DruzhA, а Вы когда собственные формы создаёте в дизайнере, просто объекты интерфейса называете так же, как имена атрибутов редактируемого слоя?
Re: Создание собственных макетов
Добавлено: 28 ноя 2012, 14:49
DruzhA
dab писал(а):DruzhA, а Вы когда собственные формы создаёте в дизайнере, просто объекты интерфейса называете так же, как имена атрибутов редактируемого слоя?
Как имена полей атрибутов редактируемого слоя.
Сама форма рабочая и открывается в обычном порядке - через идентификатор объектов (действия). Просто хочу упростить процесс открывания данной формы для более удобного пользования.
Re: Создание собственных макетов
Добавлено: 28 ноя 2012, 16:35
yellow-sky
DruzhA писал(а):Может, конечно, есть и другие варианты...?!
Мой вариант:
Код: Выделить всё
layer = qgis.utils.iface.activeLayer()
feat = QgsFeature()
if layer.featureAtId([% $id %], feat, False):
qgis.utils.iface.openFeatureForm(layer, feat)
Может есть и более короткий путь. Но я не знаю

Re: Создание собственных макетов
Добавлено: 29 ноя 2012, 07:05
dab
yellow-sky писал(а):Мой вариант: ...
То самое! Спасибо!
Re: Создание собственных макетов
Добавлено: 29 ноя 2012, 07:32
DruzhA
yellow-sky писал(а):
Мой вариант:...
А уменя ошибка вылетает:
Код: Выделить всё
При выполнении следующего кода возникла ошибка:
layer = qgis.utils.iface.activeLayer()
feat = QqsFeature()
if layer.featureAtId (2037, feat, False):
qgis.utils.iface.openFeatureForm (layer, feat)
Traceback (most recent call last):
File "", line 2, in
NameError: name 'QqsFeature' is not defined
Re: Создание собственных макетов
Добавлено: 29 ноя 2012, 07:42
dab
DruzhA писал(а):А уменя ошибка вылетает: ...
"Свойства действия" / "Тип" установлено как "Приложение Python"?
Re: Создание собственных макетов
Добавлено: 29 ноя 2012, 07:52
DruzhA
dab писал(а):"Свойства действия" / "Тип" установлено как "Приложение Python"?
Да, конечно!
Такое ощущение, что либо с Python что-то не то, либо библиотеки какие-то не видит...
Дальше вот, что пишет:
Код: Выделить всё
Версия Python:
2.7.2 (default, Jun 12 2011, 15:08:59) [MSC v.1500 32 bit (Intel)]
Версия QGIS:
1.8.0-Lisboa 'Lisboa', exported
Re: Создание собственных макетов
Добавлено: 29 ноя 2012, 09:17
dab
DruzhA писал(а):yellow-sky писал(а):
Мой вариант:...
А уменя ошибка вылетает:
Код: Выделить всё
При выполнении следующего кода возникла ошибка:
layer = qgis.utils.iface.activeLayer()
feat = QqsFeature()
if layer.featureAtId (2037, feat, False):
qgis.utils.iface.openFeatureForm (layer, feat)
Traceback (most recent call last):
File "", line 2, in
NameError: name 'QqsFeature' is not defined
Хм...
У Вас
feat = Q
qsFeature()
а класс называется
feat = Q
gsFeature()
Re: Создание собственных макетов
Добавлено: 29 ноя 2012, 09:29
DruzhA
dab писал(а):
Хм...
У Вас
feat = QqsFeature()
а класс называется
feat = QgsFeature()
Оп... Точно, dab, теперь всё работает! Большое спасибо!)
yellow-sky - спасибо за код!
Можно будет добавить этот вариант в статью на эту тему, если никто не против.
Re: Создание собственных макетов
Добавлено: 29 ноя 2012, 10:43
yellow-sky
DruzhA писал(а):Можно будет добавить этот вариант в статью на эту тему, если никто не против.
Не можно, а нужно, мы же работаем с открытым кодом

Re: Создание собственных макетов
Добавлено: 30 ноя 2012, 15:33
yellow-sky
Кстати о будущем, которое можно потрогать сегодня, если запустить ночную сборку.
В версии 2.0 будет на порядок удобнее создавать формы для редактирования. Это часть была серьезно переработана, и теперь пользователь может выбирать из трех вариантов:
- * Автоматическая генерация (по умолчанию)
* Указание своей формы, подготовленной в QtDesigner (то же самое что и раньше)
* Генерация сложной формы с группами и закладками по указанию пользователя (новый, удобный вариант)
Как пример по последнему пункту. Настройка формы в свойствах слоя:

- props.png (105.31 КБ) 10784 просмотра
Получившаяся форма:

- address.png (25.11 КБ) 10784 просмотра

- info.png (26.66 КБ) 10784 просмотра
Кстати теперь настройка форм для редактирования переехала в более логичную вкладку - Поля. Пока есть некоторые недоработки, но будем надеемся что в 2ке этот механизм будет идеальным.
(Хочется поулыбаться над пользователями проприетарных ГИС, у которых не будет такого простого и удобного встроенного редактора

)