Создание собственных макетов

Вопросы по свободной ГИС QGIS. Сообщения об ошибках, предложения по улучшению, локализация.
Аватара пользователя
dab
Гуру
Сообщения: 671
Зарегистрирован: 16 дек 2011, 20:02
Репутация: 170
Ваше звание: Гуру
Откуда: Москва
Контактная информация:

Re: Создание собственных макетов

Сообщение dab » 28 ноя 2012, 14:00

yellow-sky писал(а):И зачем усложнять процесс, если на панели есть специальная кнопка, выбрав в которой нужное действие, можно кликать по объектам??
Я так понимаю, что и вопрос то был собственно в том, как создать такое действие, активирующее пользовательскую форму для редактирования (name.ui)
Аналог, скажем, "Получить ID объекта", QtGui.QMessageBox.information(None, "Feature id", "feature id is [% $id %]"), только не QtGui.QMessageBox а форму созданную в Designer.

DruzhA
Участник
Сообщения: 82
Зарегистрирован: 07 сен 2012, 10:57
Репутация: 9
Откуда: Санкт-Петербург

Re: Создание собственных макетов

Сообщение DruzhA » 28 ноя 2012, 14:13

dab писал(а):Я так понимаю, что и вопрос то был собственно в том, как создать такое действие, активирующее пользовательскую форму для редактирования (name.ui)
Аналог, скажем, "Получить ID объекта", QtGui.QMessageBox.information(None, "Feature id", "feature id is [% $id %]"), только не QtGui.QMessageBox а форму созданную в Designer.
Абсолютно точно, dab! Может, конечно, есть и другие варианты...?!

DruzhA
Участник
Сообщения: 82
Зарегистрирован: 07 сен 2012, 10:57
Репутация: 9
Откуда: Санкт-Петербург

Re: Создание собственных макетов

Сообщение DruzhA » 28 ноя 2012, 14:21

Похоже, вопрос сводится к: что прописать в свойствах слоя-действия вместо QtGui.QMessageBox, чтобы открыть форму name.ui?
Последний раз редактировалось DruzhA 29 ноя 2012, 07:09, всего редактировалось 1 раз.

DruzhA
Участник
Сообщения: 82
Зарегистрирован: 07 сен 2012, 10:57
Репутация: 9
Откуда: Санкт-Петербург

Re: Создание собственных макетов

Сообщение DruzhA » 28 ноя 2012, 14:30

Максим Дубинин писал(а):так пишите же
Как времечко появится - займусь!

Аватара пользователя
dab
Гуру
Сообщения: 671
Зарегистрирован: 16 дек 2011, 20:02
Репутация: 170
Ваше звание: Гуру
Откуда: Москва
Контактная информация:

Re: Создание собственных макетов

Сообщение dab » 28 ноя 2012, 14:39

DruzhA, а Вы когда собственные формы создаёте в дизайнере, просто объекты интерфейса называете так же, как имена атрибутов редактируемого слоя?

DruzhA
Участник
Сообщения: 82
Зарегистрирован: 07 сен 2012, 10:57
Репутация: 9
Откуда: Санкт-Петербург

Re: Создание собственных макетов

Сообщение DruzhA » 28 ноя 2012, 14:49

dab писал(а):DruzhA, а Вы когда собственные формы создаёте в дизайнере, просто объекты интерфейса называете так же, как имена атрибутов редактируемого слоя?
Как имена полей атрибутов редактируемого слоя.
Сама форма рабочая и открывается в обычном порядке - через идентификатор объектов (действия). Просто хочу упростить процесс открывания данной формы для более удобного пользования.

yellow-sky
Гуру
Сообщения: 588
Зарегистрирован: 30 мар 2009, 21:53
Репутация: 55
Откуда: Королев

Re: Создание собственных макетов

Сообщение yellow-sky » 28 ноя 2012, 16:35

DruzhA писал(а):Может, конечно, есть и другие варианты...?!
Мой вариант:

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

layer = qgis.utils.iface.activeLayer()
feat = QgsFeature()
if layer.featureAtId([% $id %], feat, False):
    qgis.utils.iface.openFeatureForm(layer, feat)
Может есть и более короткий путь. Но я не знаю :(

Аватара пользователя
dab
Гуру
Сообщения: 671
Зарегистрирован: 16 дек 2011, 20:02
Репутация: 170
Ваше звание: Гуру
Откуда: Москва
Контактная информация:

Re: Создание собственных макетов

Сообщение dab » 29 ноя 2012, 07:05

yellow-sky писал(а):Мой вариант: ...
То самое! Спасибо!

DruzhA
Участник
Сообщения: 82
Зарегистрирован: 07 сен 2012, 10:57
Репутация: 9
Откуда: Санкт-Петербург

Re: Создание собственных макетов

Сообщение DruzhA » 29 ноя 2012, 07:32

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

Аватара пользователя
dab
Гуру
Сообщения: 671
Зарегистрирован: 16 дек 2011, 20:02
Репутация: 170
Ваше звание: Гуру
Откуда: Москва
Контактная информация:

Re: Создание собственных макетов

Сообщение dab » 29 ноя 2012, 07:42

DruzhA писал(а):А уменя ошибка вылетает: ...
"Свойства действия" / "Тип" установлено как "Приложение Python"?

DruzhA
Участник
Сообщения: 82
Зарегистрирован: 07 сен 2012, 10:57
Репутация: 9
Откуда: Санкт-Петербург

Re: Создание собственных макетов

Сообщение DruzhA » 29 ноя 2012, 07:52

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

Аватара пользователя
dab
Гуру
Сообщения: 671
Зарегистрирован: 16 дек 2011, 20:02
Репутация: 170
Ваше звание: Гуру
Откуда: Москва
Контактная информация:

Re: Создание собственных макетов

Сообщение dab » 29 ноя 2012, 09:17

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 = QqsFeature()
а класс называется
feat = QgsFeature()

DruzhA
Участник
Сообщения: 82
Зарегистрирован: 07 сен 2012, 10:57
Репутация: 9
Откуда: Санкт-Петербург

Re: Создание собственных макетов

Сообщение DruzhA » 29 ноя 2012, 09:29

dab писал(а): Хм...
У Вас
feat = QqsFeature()
а класс называется
feat = QgsFeature()
Оп... Точно, dab, теперь всё работает! Большое спасибо!)
yellow-sky - спасибо за код!

Можно будет добавить этот вариант в статью на эту тему, если никто не против.

yellow-sky
Гуру
Сообщения: 588
Зарегистрирован: 30 мар 2009, 21:53
Репутация: 55
Откуда: Королев

Re: Создание собственных макетов

Сообщение yellow-sky » 29 ноя 2012, 10:43

DruzhA писал(а):Можно будет добавить этот вариант в статью на эту тему, если никто не против.
Не можно, а нужно, мы же работаем с открытым кодом :)

yellow-sky
Гуру
Сообщения: 588
Зарегистрирован: 30 мар 2009, 21:53
Репутация: 55
Откуда: Королев

Re: Создание собственных макетов

Сообщение yellow-sky » 30 ноя 2012, 15:33

Кстати о будущем, которое можно потрогать сегодня, если запустить ночную сборку.
В версии 2.0 будет на порядок удобнее создавать формы для редактирования. Это часть была серьезно переработана, и теперь пользователь может выбирать из трех вариантов:
  • * Автоматическая генерация (по умолчанию)
    * Указание своей формы, подготовленной в QtDesigner (то же самое что и раньше)
    * Генерация сложной формы с группами и закладками по указанию пользователя (новый, удобный вариант)
Как пример по последнему пункту. Настройка формы в свойствах слоя:
props.png
props.png (105.31 КБ) 10634 просмотра
Получившаяся форма:
address.png
address.png (25.11 КБ) 10634 просмотра
info.png
info.png (26.66 КБ) 10634 просмотра
Кстати теперь настройка форм для редактирования переехала в более логичную вкладку - Поля. Пока есть некоторые недоработки, но будем надеемся что в 2ке этот механизм будет идеальным.
(Хочется поулыбаться над пользователями проприетарных ГИС, у которых не будет такого простого и удобного встроенного редактора :) )

Ответить

Вернуться в «QGIS»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 4 гостя