Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Igors от Октябрь 06, 2015, 13:52



Название: Подстановка в слоты
Отправлено: Igors от Октябрь 06, 2015, 13:52
Добрый день

Примечание: к слот/сигнал это не имеет никакого отношения.

Есть список напр из 3 объектов. Пользователь нажал бубочку "расчет", в рез-те записался файл который можно использовать, причем не только для тех 3 что были на момент расчета, но и для любых других. Т.е. в списке можно включать/отключать, добавлять, удалять и записанный файл работает с новым списком - так задумано. Сейчас файл хранит просто "слоты" - индексы 0, 1, 2. Ну ясно что если добавит 4 объекта, то с последним ничего не будет - в файле данные только для 3. Но можно заменить любой из 3 на новый, или отключить последний - все нормально.

И вот мелкая неприятность: когда отключается (или удаляется) "не последний", напр 0-й, то все сдвигается - 1-й попадает на место 0-го, 2-й на место 1-го. Когда файл используется можно указать ему что такой-то слот сейчас выключен. Но как (на каком основании) это делать? Напр
Цитировать
- Obj 0
+ Obj 1
+ Obj 2
Так хочется чтобы Obj 1(2) оставались слотами 1 и 2, а слот 0 неактивен
Цитировать
- Obj 0
+ Obj_new
+ Obj 1
+ Obj 2
А так желаемый рез-т чтобы активный Obj_new использовался вместо Obj 0 (как сейчас и работает)

Как это разрулить?

Спасибо




Название: Re: Подстановка в слоты
Отправлено: Racheengel от Октябрь 06, 2015, 22:14
сохранять ID слотов, а не только индексы?


Название: Re: Подстановка в слоты
Отправлено: m_ax от Октябрь 06, 2015, 22:35
сохранять ID слотов, а не только индексы?

У вас у практиков, по видимому, есть какая то сакральная связь) Я вот раз десять перечитывал, так ничего и не понял)
Но, не исключаю, что это чисто мои проблемы) Но всё же..) 


Название: Re: Подстановка в слоты
Отправлено: Racheengel от Октябрь 06, 2015, 23:06
сохранять ID слотов, а не только индексы?

У вас у практиков, по видимому, есть какая то сакральная связь) Я вот раз десять перечитывал, так ничего и не понял)
Но, не исключаю, что это чисто мои проблемы) Но всё же..) 

Ну дык это, как же, там бубочка есть, если ее того, то в файл слот того, епта, а потом если еще раз, то оно уже не так, во :(

http://tomsk.fm/watch/191979 (http://tomsk.fm/watch/191979)


Название: Re: Подстановка в слоты
Отправлено: m_ax от Октябрь 06, 2015, 23:18
Цитировать
то в файл слот того, епта, а потом
Не, не, в Казани реальные пацаны говорят не ёпта, а  ибтэ) "Есть денги ибтэ? А если найду" ;D
Жаргон, но всё же..)


Название: Re: Подстановка в слоты
Отправлено: Racheengel от Октябрь 06, 2015, 23:29
Не, не, в Казани реальные пацаны говорят не ёпта, а  ибтэ) "Есть денги ибтэ? А если найду" ;D

Век живи - век учись :) Никогда в Казани не был... А как там в моде нынче, кепка-беляш или "классика"-восьмиклинка? :)


Название: Re: Подстановка в слоты
Отправлено: m_ax от Октябрь 06, 2015, 23:54
Цитировать
Никогда в Казани не был... А как там в моде нынче, кепка-беляш или "классика"-восьмиклинка?
Не, ну Казань сейчас цивильный город, можно, конечно, нарваться на гопоту где-нить на "жилке", но там сейчас не так как было  раньше) Запуганные они стали какие то..  
Помню мы с девчёнками ночью там алкоголь покупали (недогон так сказать) и ничего, побратались с местными пацанами даже) И нормуль)  Но это, возможно, мы уже сами под мухой были.. Хотя даже и не возможно, а точно))


Название: Re: Подстановка в слоты
Отправлено: Igors от Октябрь 07, 2015, 05:36
У вас у практиков, по видимому, есть какая то сакральная связь) Я вот раз десять перечитывал, так ничего и не понял)
Но, не исключаю, что это чисто мои проблемы) Но всё же..)  
Есть 3 объекта, напр шарик, кубик и плоскость. Запустили физический движок. Шарик начал падать под действием тяжести, отскочил от плоскости, ударил кубик и.т.д. Это "симуляция" которая в общем случае может считаться долго. Естественно записать все посчитанные траектории в файл, чтобы каждый раз симулятор не гонять. Столь же естественно вместо простого шарика подставить что-то посложнее/поинтереснее и пусть оно движется по рассчитанному пути.

сохранять ID слотов, а не только индексы?
Неясно что дальше.

Позиция 1: файл может быть назначен извне (с диска), имеем какие-то "левые" ID (в файле). Ну может здесь и объективно решения нет (не знаю)

Позиция 2: файл "родной" но все "оригиналы" уже заменены. Хмм... "что осталось на трубе"?

Как-то я тут растерялся...  


Название: Re: Подстановка в слоты
Отправлено: m_ax от Октябрь 07, 2015, 07:05
Цитировать
Есть 3 объекта, напр шарик, кубик и плоскость. Запустили физический движок. Шарик начал падать под действием тяжести, отскочил от плоскости, ударил кубик и.т.д. Это "симуляция" которая в общем случае может считаться долго. Естественно записать все посчитанные траектории в файл, чтобы каждый раз симулятор не гонять. Столь же естественно вместо простого шарика подставить что-то посложнее/поинтереснее и пусть оно движется по рассчитанному пути.
А с чего Вы взяли, что что-то отличное от шарика будет иметь ту же траекторию? В поле тяжести (однородной) у них разве совпадут траектории центов масс и то, только до первого столкновения с чем либо..


Название: Re: Подстановка в слоты
Отправлено: Igors от Октябрь 07, 2015, 07:14
А с чего Вы взяли, что что-то отличное от шарика будет иметь ту же траекторию? В поле тяжести (однородной) у них разве совпадут траектории центов масс и то, только до первого столкновения с чем либо..
То юзер решает устраивает ли его аппроксимация сложного объекта шариком (или др "Proxy Shape"). А Вы от темы не отвлекайтесь  :)


Название: Re: Подстановка в слоты
Отправлено: Bepec от Октябрь 07, 2015, 07:37
Что вы паритесь?
Вы хотите чтобы индексы шли с нуля, по количеству объектов. Так создавайте их всегда при получении данных с файла, а после анализируйте, уже добавляя признаки "отключения/включения".

Т.е. вместо использования статичных индексов используйте относительные, перерасчитываемые при вкл/откл объекта.

например:
Код:
загружаем
- Obj // индекс в массиве 0, дополнительный индекс -1 (отключен)
+ Obj // индекс в массиве 1, дополнительный индекс 0
+ Obj // индекс в массиве 2, дополнительный индекс 1

Втыкнули доп объект
Код:
- Obj          // индекс в массиве 0, дополнительный индекс -1 (отключен)
+ Obj_new      // индекс в массиве 1, дополнительный индекс 0
+ Obj 1        // индекс в массиве 2, дополнительный индекс 1
+ Obj 2        // индекс в массиве 3, дополнительный индекс 2

Переключили вкл/выкл для Obj, перерасчет дополнительных индексов
Код:
+ Obj          // индекс в массиве 0, дополнительный индекс 0
+ Obj_new      // индекс в массиве 1, дополнительный индекс 1
+ Obj 1        // индекс в массиве 2, дополнительный индекс 2
+ Obj 2        // индекс в массиве 3, дополнительный индекс 3

Т.е. вам всего то надо будет работать по дополнительному индексу, а не по индексу массива.

PS но всё равно даже на такой ответ Igors скажет - смена темы / непонятная придирка / насмешка / пожелание не слышать больше ответов / добавление условий к задаче / смена задачи / демагогическое усложнение условия :)


Название: Re: Подстановка в слоты
Отправлено: Igors от Октябрь 07, 2015, 07:55
Т.е. вам всего то надо будет работать по дополнительному индексу, а не по индексу массива.
Пробуем. Юзер выключил первый (нулевой) объект. Вообще-то он его спокойно может удалить - ничем не рискует, файл-то есть (это я к тому что отслеживание неактивных все проблемы не решит).

загружаем
- Obj // индекс в массиве 0, дополнительный индекс -1 (отключен)
+ Obj // индекс в массиве 1, дополнительный индекс 0
+ Obj // индекс в массиве 2, дополнительный индекс 1
По "дополнительным" тот же "сдвиг" что и сейчас (и чего хотелось бы избежать). Если он воткнет активный (между первой и второй строками) - будет норм, так это и сейчас так работает

В общем - не понял


Название: Re: Подстановка в слоты
Отправлено: Racheengel от Октябрь 07, 2015, 09:12
Цитировать
Позиция 2: файл "родной" но все "оригиналы" уже заменены. Хмм... "что осталось на трубе"?

В смысле заменены? Их удалили? Тогда старые удалить из файла, а новые заново пересчитать.

Имя объекта прт этом может меняться как угодго, главное, чтоб id были уникальными.


Название: Re: Подстановка в слоты
Отправлено: Igors от Октябрь 07, 2015, 11:56
Цитировать
Позиция 2: файл "родной" но все "оригиналы" уже заменены. Хмм... "что осталось на трубе"?

В смысле заменены? Их удалили? Тогда старые удалить из файла, а новые заново пересчитать.
Файл не подлежит "частичному пересчету". См. пример выше для объектов шарик, кубик и плоскость. Удалять из файла также ничего нельзя - в любой момент "оригинальная" конфигурация может быть восстановлена.

[OFF]
Вы даете типичные ответы "на основании (богатого) опыта" :) Вот только опыт этот выглядит удивительно однообразно и узковато - из того же ассыстентского ведра :)
[/OFF]


Название: Re: Подстановка в слоты
Отправлено: Racheengel от Октябрь 07, 2015, 12:16
Цитировать
Вы даете типичные ответы "на основании (богатого) опыта" Улыбающийся Вот только опыт этот выглядит удивительно однообразно и узковато - из того же ассыстентского ведра Улыбающийся

Какие вопросы, такие и ответы :) Как я должен понимать фразу "все "оригиналы" уже заменены"?


Название: Re: Подстановка в слоты
Отправлено: Bepec от Октябрь 07, 2015, 17:49
И вот Igors выдал очередное требование - чтобы в массиве были ВСЕ объекты включая отключенные, с индексами по ПОРЯДКУ и чтобы сдвига не было. Но чтобы нулевым объектом, первым и так далее были только активные.

Это взаимоисключающие требования )


Название: Re: Подстановка в слоты
Отправлено: Racheengel от Октябрь 07, 2015, 18:00
Если каждый элемент в "файле" будет иметь уникальный ID - то вообще по барабану, есть он, нет, удален, в другом порядке попал и т.д. Это имхо единственное решение и других придумывать смысла нет :)


Название: Re: Подстановка в слоты
Отправлено: Igors от Октябрь 08, 2015, 07:53
И вот Igors выдал очередное требование - чтобы в массиве были ВСЕ объекты включая отключенные, с индексами по ПОРЯДКУ и чтобы сдвига не было. Но чтобы нулевым объектом, первым и так далее были только активные.

Это взаимоисключающие требования )
Ничего не подозревал о таких требованиях, где я их  "выдавал"? :)  Вообще покажите где я чего "переиначил", т.е. добавил или изменил? Все как было в первом посте, так и осталось

Если каждый элемент в "файле" будет иметь уникальный ID - то вообще по барабану, есть он, нет, удален, в другом порядке попал и т.д. Это имхо единственное решение и других придумывать смысла нет :)
Топчемся на месте, тщетно пытаясь всунуть стандартную вещь. См хотя бы название "подстановка", т.е. др объект (ID которого не сохранено в файле) должен работать

Может как-то "заякорить" их в UI? Типа "где бы ни стоял - его слот 2 в файле". Это пока очень смутно. Очевидно что без доп данных решения нет - ну так никто не запрещал их создавать


Название: Re: Подстановка в слоты
Отправлено: Bepec от Октябрь 08, 2015, 10:25
Очередная несвязная тема Igors :D как минимум два решения подходят, но он продолжает требовать невозможного :D


Название: Re: Подстановка в слоты
Отправлено: Igors от Октябрь 08, 2015, 10:59
Очередная несвязная тема Igors :D как минимум два решения подходят, но он продолжает требовать невозможного :D
Не поняли - отойдите и не мешайте тем кто понял. Не гадьте в моих темах (да и вообще ни в каких)


Название: Re: Подстановка в слоты
Отправлено: Racheengel от Октябрь 08, 2015, 11:57
Стоп. Насколько я понимаю ТЕПЕРЬ, то, что лежит в файле - это какие-то абстрактные траектории, и к самим объектам они имеют мало отношения. Ну тогда нужен двойной мэппинг - в файл пишутся траектории и ID этих ТРАЕКТОРИЙ, а каждый объект, имея собственный ID, должен иметь еще и связь с возможной ID траектории. В любом случае через индексы это не решается.


Название: Re: Подстановка в слоты
Отправлено: Igors от Октябрь 08, 2015, 12:39
Стоп. Насколько я понимаю ТЕПЕРЬ, то, что лежит в файле - это какие-то абстрактные траектории, и к самим объектам они имеют мало отношения. Ну тогда нужен двойной мэппинг - в файл пишутся траектории и ID этих ТРАЕКТОРИЙ, а каждый объект, имея собственный ID, должен иметь еще и связь с возможной ID траектории. В любом случае через индексы это не решается.
Возможно Вы видели компьютер изнутри  :) Там ряд разъемов - так вот они, слоты. Каждый слот имеет индекс и в него можно чего-то воткнуть. Напр у нас пачка видюх и мы суем их в слоты одну за одной. Сейчас тупо подряд: первый из пачки - в слот 0, второй - в слот 1 и.т.д. Но юзеру нужна возможность это контролировать - напр оставить нулевой слот пустым.

Ага, кажись начало придумываться...


Название: Re: Подстановка в слоты
Отправлено: Bepec от Октябрь 08, 2015, 19:15
Не буду спорить кто гадит и где, у нас противоположные мнения по этому поводу.
Но моё предложение насчёт относительного индекса полностью соответствует вопросу, озвученному в теме :) Другой вопрос, что у вас есть ещё невысказанные условия, по которым оно не подходит - но это проблема ваших тараканов :)


Название: Re: Подстановка в слоты
Отправлено: Igors от Октябрь 09, 2015, 03:01
См аттач. Юзер указал (пока неясно каким образом) что объект с таким-то ID соответствует слоту с таким-то индексом. Это не значит что "только этот слот (или объект) используются". Это просто "соответствие которое должно выполняться". Теперь если Object 1 отключен/удален, Slot 1 останется пустым (как и хотели). Если наоборот, 10 новых объектов поставлены выше Object 2 - только первый из них используется (для них есть только Slot 1)

Теперь это надо как-то (лаконично) реализовать в UI. Thoughts?


Название: Re: Подстановка в слоты
Отправлено: Bepec от Октябрь 09, 2015, 12:51
Вопрос, как тогда реализуется подстановка во второй и третий слоты?
Т.е. если допустим для 3 слотов, но определён лишь третий, тогда первые любые два встанут в свободные слоты?
Или же присутствует разбиение на группы аля слот 1 слот 2 слот 3?


Название: Re: Подстановка в слоты
Отправлено: Igors от Октябрь 09, 2015, 14:37
Вопрос, как тогда реализуется подстановка во второй и третий слоты?
Т.е. если допустим для 3 слотов, но определён лишь третий, тогда первые любые два встанут в свободные слоты?
Или же присутствует разбиение на группы аля слот 1 слот 2 слот 3?
Да. Тот же пример: из "пачки видюх" мы берем только в возрастающем порядке (хотя можем и не подряд). Напр 1, 3, 4. Также и слоты заполняем в возрастающем (и здесь можем пропускать). Теперь любое заданное соответствие "объект-слот" разбивает оба множества на 2. Внутри подмножеств действует начальное правило "лепи подряд", нет данных/оснований для другого.   


Название: Re: Подстановка в слоты
Отправлено: Racheengel от Октябрь 09, 2015, 14:38
Цитировать
Теперь это надо как-то (лаконично) реализовать в UI.

Дык, наверное, так, как на рисунке, и будет лучше всего. И порядок сразу видно, и существующие связи :)


Название: Re: Подстановка в слоты
Отправлено: Igors от Октябрь 09, 2015, 14:43
Цитировать
Теперь это надо как-то (лаконично) реализовать в UI.

Дык, наверное, так, как на рисунке, и будет лучше всего. И порядок сразу видно, и существующие связи :)
Обильное UI, хотелось бы лаконичнее. И не совсем ясно как это должно роялить на момент нажатия "расчет" (тут-то уже слоты пропускать как-то..)


Название: Re: Подстановка в слоты
Отправлено: Racheengel от Октябрь 11, 2015, 19:24
Цитировать
Обильное UI, хотелось бы лаконичнее.

UI - это лицо программы.. а оно должно быть максимально понятным пользователю. Не перегруженным и не слишком примитивным. Грань тонка, но как по мне, именно так, как на этой картинке, и отражает саму СУТЬ :)

Цитировать
И не совсем ясно как это должно роялить на момент нажатия "расчет" (тут-то уже слоты пропускать как-то..)
Что значит роялить?


Название: Re: Подстановка в слоты
Отправлено: Igors от Октябрь 12, 2015, 11:05
Цитировать
И не совсем ясно как это должно роялить на момент нажатия "расчет" (тут-то уже слоты пропускать как-то..)
Что значит роялить?
Пользователь собирается нажать бубочку расчет. Что должно произойти с "назначенными" индексами слотов? Может взглянуть с др стороны - после расчета автоматычно устанавливаются все связки "подряд"
Цитировать
* Obj 1
* Obj 2
* Obj 3
Просто бубочка в листбоксе, показывает что этот объект использовался для генерации. Теперь юзер заменил первый объект    
Цитировать
  Obj new
* Obj 2
* Obj 3
Бубочка исчезла - ага, это уже "подставленный". Или может так
Цитировать
* 1 | Obj 1
* 2 | Obj 2
* 3 | Obj 3
Бубочка + индекс слота, бубочка означает что объект закреплен к слоту с этим индексом

[OFF]
Racheengel, лучше меньше ответов, но более продуманных. А то пока дубль-пусто ("КО")  :)
[/OFF]