Russian Qt Forum
Ноябрь 24, 2024, 21:41 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Один динамический источник данных для нескольких combobox'ов  (Прочитано 4678 раз)
Givoi
Гость
« : Август 22, 2012, 19:22 »

Вот такая проблема возникла... как лучше сделать, на форме 4 combobox, из которых можно выбрать один из ком портов, если в одном комбобоксе выбран допустим первый ком порт, то в 3 остальных комбобоксах он должен исчезать из выбираемых. При этом нужно учесть что можно поменять порт, и тот который был выбран до этого должен вернуться в список. 0_о
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #1 : Август 22, 2012, 19:31 »

Не проще ли давать отлуп типа "этот порт уже выбран"?  А то "исчезновение" может быть неправильно понято
Записан
Givoi
Гость
« Ответ #2 : Август 22, 2012, 19:32 »

неа, ТЗ
Записан
Bepec
Гость
« Ответ #3 : Август 22, 2012, 19:47 »

ну сразу видна гадость - остальные комбобоксы должны содержать пункт аля "не выбрано" Улыбающийся

А так просто зацепить все комбы на 1 слот и там через sender разруливать ситуацию Улыбающийся
Записан
andrew.k
Гость
« Ответ #4 : Август 22, 2012, 21:08 »

неа, ТЗ
Какое-то странное ТЗ.
Прямо так и написано, что должно что-то исчезать?
Записан
andrew.k
Гость
« Ответ #5 : Август 22, 2012, 21:25 »

А если, например, я по ошибке в первом комбобоксе выбрал COM1, а во втором COM2. Затем обнаружил свою ошибку и хочу поменять их местами?
Нужно будет делать три операции, вместо нормальных двух, либо даже одной (при нормальной реализации)!
А если всего будет доступно только 4 порта, то выбрав один раз все порты их уже невозможно будет изменить (т.к. все порты выбраны, то комбобоксы должны быть пустые)

Раз уж нужно именно 4 комбобокаса, я бы сделал так:
1. Во всех комбобокса должен быть конечно же полный список всех доступных портов.
2. При выборе порта в одном из комбо, смотрим не выбран ли он в других. Если не выбран, то все ок.
3. Если уже выбран в другом комбо.
варианты:
3а. Повторяющийся заменяем на первый по порядку свободный
3б. Повторяющийся заменяем на то, который был до этого выбран в текущем элементе.

Вариант 3б позволит в один клик, поменять местам два порта, а это наверняка будет частая операция, либо как минимум полезная.
Вариант 3а простой и понятный.

Не думаю, что все это будет противоречить ТЗ.

И вообще исчезающие элементы управления это глупость, если что-то должно быть недоступно, оно должно быть выключено (disabled), но оставаться на экране и желательно не менять своего положения.
В твоей реализации если кто-то перепутает уже настроенные порты, перенастройка превратится в головоломку. Что где надо тыкнуть, чтобы там где-то появилось то, что требудется.
Пересмотри подход.
« Последнее редактирование: Август 22, 2012, 21:32 от andrew.k » Записан
andrew.k
Гость
« Ответ #6 : Август 22, 2012, 21:27 »

Ничегосебе какое большое сообщение настрочил) Буду надеяться, что не зря)
Записан
andrew.k
Гость
« Ответ #7 : Август 22, 2012, 21:37 »

ну сразу видна гадость - остальные комбобоксы должны содержать пункт аля "не выбрано" Улыбающийся
Это кстати тоже чушь.
В комбобоксе легко может быть ничего не выбрано.
Может еще в лайнэдиты писать "ничего не вписано", если он пуст?
Записан
Bepec
Гость
« Ответ #8 : Август 22, 2012, 22:22 »

LineEdit пуст. А ComboBox подразумевает содержание Улыбающийся Не со мной спорь - с пользователем. 
Пустой комбобокс выбора порта - ЧЗХ?

Если такое ТЗ - делай по ТЗ. Как примерно я уже описал.

А если есть простор для фантазии - варианты andrew.k к вашим услугам Улыбающийся

Записан
andrew.k
Гость
« Ответ #9 : Август 22, 2012, 22:35 »

LineEdit пуст. А ComboBox подразумевает содержание Улыбающийся Не со мной спорь - с пользователем.  
Пустой комбобокс выбора порта - ЧЗХ?
Какой из тебя пользователь мне остается только догадываться.
Не пустой комбобокс, а комбобокс в котором ничего не выбрано! Разницу понимаешь?

А вот если делать по этому "ТЗ", то в случае только 4 доступных портов и 4 комбобоксах, как бы более чем наполовину очевидно, что все они будут пустыми, после сделанного выбора во всех комбо. И изменить эту ситуацию станет невозможно!
« Последнее редактирование: Август 22, 2012, 22:42 от andrew.k » Записан
andrew.k
Гость
« Ответ #10 : Август 22, 2012, 22:40 »

Кстати это вариант 3а, если выбрать тот, что уже есть, повторяющийся комбобокс "теряет" выбранный элемент, т.е. в нем после этого ничего не выбрано.
Записан
andrew.k
Гость
« Ответ #11 : Август 22, 2012, 22:47 »

Хозяйке на заметку:
"Если у вас нет времени сделать что-то правильно, где же вы найдете время, чтобы это переделать?" автор мне неизвестен.
Записан
Givoi
Гость
« Ответ #12 : Август 23, 2012, 20:42 »

andrew.k, спасибо большое. Все сделал. Добавил в список первую(точнее нулевую) запись "NONE", и если выбирается порт, который уже выбран в другом комбобоксе, то в том, котором порт был выбран ранее, значение сбрасывается на "NONE".
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.101 секунд. Запросов: 23.