Название: получение порядкового номера предмета со сцены Отправлено: K26Tony от Июль 17, 2015, 08:38 День добрый, подскажите пожалуйста, у меня есть сцена, она заполняется двухмерным массивом квадратов(item), можно ли как то нумеровать эти элементы, что бы при нажатии на любой из них получить их порядковый номер в массиве, например i,j?
Название: Re: получение порядкового номера предмета со сцены Отправлено: Bepec от Июль 17, 2015, 09:28 Самый простой вариант, сделайте объекту квадрату поля i,j и заполняйте их при создании. А при клике показывайте.
Название: Re: получение порядкового номера предмета со сцены Отправлено: Fregloin от Июль 17, 2015, 10:22 да, придется писать наследников с добавленными полями, по другому можно, но на сколько это будет эффективно ..
можете завести хеш таблицу вида QHash<QGraphicsItem*,QPoint>, ключи - это добавляемые элементы, а значения QPoint, где x и y будут вашие искомые i - j. Но в этом случае нужно так же обрабатывать удаление элементов, что бы в хеше не висели мертвые указатели. Название: Re: получение порядкового номера предмета со сцены Отправлено: GreatSnake от Июль 17, 2015, 10:23 Цитата: assistant Код
Название: Re: получение порядкового номера предмета со сцены Отправлено: Fregloin от Июль 17, 2015, 14:10 да, все гениальное просто.. забыл за этот метод.. сказывается медленный переход на яву..
Название: Re: получение порядкового номера предмета со сцены Отправлено: K26Tony от Июль 27, 2015, 07:50 Не могли бы пояснить поподробнее
Цитата: assistant Код
Название: Re: получение порядкового номера предмета со сцены Отправлено: Racheengel от Июль 27, 2015, 11:44 Я так понимаю, что при создании item можно сделать что-то типа:
item->setData(KEY_I, i); item->setData(KEY_J, j); ну и KEY_I и KEY_J соответственно где-то задать до этого. Название: Re: получение порядкового номера предмета со сцены Отправлено: Bepec от Июль 27, 2015, 12:17 Объявить
Код: #define KEY_I Qt::UserRole+1 Установить Код: item->setData(KEY_I, i); Прочитать Код: int i,j; Название: Re: получение порядкового номера предмета со сцены Отправлено: K26Tony от Июль 28, 2015, 07:47 Что то я толком так и не могу разобраться с этими свойствами объектов классов. Исправьте пожалуйста код что бы все правильно было. Мне бы хоть один пример полный посмотреть, тогда все пойму :) Идея в том что бы вывести двумерный массив объектов с данными. Дальше мне все понятно. Может быть я совсем не то делаю с классом этого квадрата. И еще как правильно ключ с переменной связать в классе?
Код: //////////////////////// myitem.h //////////////////////////////// Название: Re: получение порядкового номера предмета со сцены Отправлено: Bepec от Июль 28, 2015, 13:34 Вы в своём классе НЕ переопределяете методы setData и data. Потом берёте мой код "Установить" из предыдущего и вставляете в цикл. При клике, в функцию вы вставляете мой код "Прочитать".
Это будет работать на любых объектах QGraphicsItem и их наследников. PS Дополнительного кода, кроме этих 7 строк НЕ НАДО :) |