Russian Qt Forum
Ноябрь 24, 2024, 21:27
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Вопросы новичков
>
Один динамический источник данных для нескольких combobox'ов
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Один динамический источник данных для нескольких combobox'ов (Прочитано 4675 раз)
Givoi
Гость
Один динамический источник данных для нескольких combobox'ов
«
:
Август 22, 2012, 19:22 »
Вот такая проблема возникла... как лучше сделать, на форме 4 combobox, из которых можно выбрать один из ком портов, если в одном комбобоксе выбран допустим первый ком порт, то в 3 остальных комбобоксах он должен исчезать из выбираемых. При этом нужно учесть что можно поменять порт, и тот который был выбран до этого должен вернуться в список. 0_о
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Один динамический источник данных для нескольких combobox'ов
«
Ответ #1 :
Август 22, 2012, 19:31 »
Не проще ли давать отлуп типа "этот порт уже выбран"? А то "исчезновение" может быть неправильно понято
Записан
Givoi
Гость
Re: Один динамический источник данных для нескольких combobox'ов
«
Ответ #2 :
Август 22, 2012, 19:32 »
неа, ТЗ
Записан
Bepec
Гость
Re: Один динамический источник данных для нескольких combobox'ов
«
Ответ #3 :
Август 22, 2012, 19:47 »
ну сразу видна гадость - остальные комбобоксы должны содержать пункт аля "не выбрано"
А так просто зацепить все комбы на 1 слот и там через sender разруливать ситуацию
Записан
andrew.k
Гость
Re: Один динамический источник данных для нескольких combobox'ов
«
Ответ #4 :
Август 22, 2012, 21:08 »
Цитата: Givoi от Август 22, 2012, 19:32
неа, ТЗ
Какое-то странное ТЗ.
Прямо так и написано, что должно что-то исчезать?
Записан
andrew.k
Гость
Re: Один динамический источник данных для нескольких combobox'ов
«
Ответ #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
Гость
Re: Один динамический источник данных для нескольких combobox'ов
«
Ответ #6 :
Август 22, 2012, 21:27 »
Ничегосебе какое большое сообщение настрочил) Буду надеяться, что не зря)
Записан
andrew.k
Гость
Re: Один динамический источник данных для нескольких combobox'ов
«
Ответ #7 :
Август 22, 2012, 21:37 »
Цитата: Bepec от Август 22, 2012, 19:47
ну сразу видна гадость - остальные комбобоксы должны содержать пункт аля "не выбрано"
Это кстати тоже чушь.
В комбобоксе легко может быть ничего не выбрано.
Может еще в лайнэдиты писать "ничего не вписано", если он пуст?
Записан
Bepec
Гость
Re: Один динамический источник данных для нескольких combobox'ов
«
Ответ #8 :
Август 22, 2012, 22:22 »
LineEdit пуст. А ComboBox подразумевает содержание
Не со мной спорь - с пользователем.
Пустой комбобокс выбора порта - ЧЗХ?
Если такое ТЗ - делай по ТЗ. Как примерно я уже описал.
А если есть простор для фантазии - варианты andrew.k к вашим услугам
Записан
andrew.k
Гость
Re: Один динамический источник данных для нескольких combobox'ов
«
Ответ #9 :
Август 22, 2012, 22:35 »
Цитата: Bepec от Август 22, 2012, 22:22
LineEdit пуст. А ComboBox подразумевает содержание
Не со мной спорь - с пользователем.
Пустой комбобокс выбора порта - ЧЗХ?
Какой из тебя пользователь мне остается только догадываться.
Не пустой комбобокс, а комбобокс в котором ничего не выбрано! Разницу понимаешь?
А вот если делать по этому "ТЗ", то в случае только 4 доступных портов и 4 комбобоксах, как бы более чем наполовину очевидно, что все они будут пустыми, после сделанного выбора во всех комбо. И изменить эту ситуацию станет невозможно!
«
Последнее редактирование: Август 22, 2012, 22:42 от andrew.k
»
Записан
andrew.k
Гость
Re: Один динамический источник данных для нескольких combobox'ов
«
Ответ #10 :
Август 22, 2012, 22:40 »
Кстати это вариант 3а, если выбрать тот, что уже есть, повторяющийся комбобокс "теряет" выбранный элемент, т.е. в нем после этого ничего не выбрано.
Записан
andrew.k
Гость
Re: Один динамический источник данных для нескольких combobox'ов
«
Ответ #11 :
Август 22, 2012, 22:47 »
Хозяйке на заметку:
"Если у вас нет времени сделать что-то правильно, где же вы найдете время, чтобы это переделать?" автор мне неизвестен.
Записан
Givoi
Гость
Re: Один динамический источник данных для нескольких combobox'ов
«
Ответ #12 :
Август 23, 2012, 20:42 »
andrew.k, спасибо большое. Все сделал. Добавил в список первую(точнее нулевую) запись "NONE", и если выбирается порт, который уже выбран в другом комбобоксе, то в том, котором порт был выбран ранее, значение сбрасывается на "NONE".
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...