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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Формирование ComboBox, с учетом выбранных параметров из другого ComboBox  (Прочитано 4161 раз)
SpaceRabbit
Гость
« : Декабрь 12, 2012, 08:19 »

Здравствуйте, подскажите пожалуйста, как мне реализовать комбобоксы, значения которых формируются в зависимости от выбранных значений в предыдущем комбобоксе.., к примеру, у меня есть 4 комбо:

Режим
Устройство
Сигнал
Скорость

Задача: в зависимости от выбранного режима, выводится список устройств. То или иное устройство может работать с различными типами сигналов, и в зависимости от сигнала на различной скорости..
Схематично это примерно так:
Код:
(combo_Режим)
- Режим 1
- Режим 2

(combo_Устройство) для Режим 1
- Устройство 1
- Устройство 2
- Устройство 3

(combo_Устройство) для Режим 2
- Устройство 1
- Устройство 9

(combo_Сигнлал) для Режима 1 и Устройств 1 и 2
- Сигнал 1
- Сигнал 2

(combo_Сигнлал) для Режима 1 и Устройства 3
- Сигнал 3
- Сигнал 4

(combo_Сигнлал) для Режима 2 и Устройста 1
- Сигнал 5
- Сигнал 6
- Сигнал 7

(combo_Сигнлал) для Режима 2 и Устройста 9
- Сигнал 5
- Сигнал 8

(combo_Скорость) для: Режим 1 > Устройство 1 > Сигнал 1
- Скорость 1
- Скорость 2
- Скорость 3

(combo_Скорость) для: Режим 1 > Устройство 1 > Сигнал 2
- Скорость 4
- Скорость 5
- Скорость 6

(combo_Скорость) для: Режим 1 > Устройство 2 > Сигнал 1 и 2
- Скорость 2
- Скорость 5
- Скорость 7

(combo_Скорость) для: Режим 1 > Устройство 3 > Сигнал 1 и 2
- Скорость 1
- Скорость 3
- Скорость 6
- Скорость 7
- Скорость 8

Я сделал слот, который в зависимости от Режима(combo_Режим) добавляет в combo_Устройство список элементов.. но это наверное не правильно, потому как кол-во устройств может быть различным, одно и тоже устройство может иметь разный индекс в списке..
Записан
ssoft
Гость
« Ответ #1 : Декабрь 12, 2012, 08:45 »

1. Можно формировать выпадающие списки вручную, обрабатывая события выбора элементов в них.
2. Можно сформировать одну модель данных и использовать QSortFilterProxyModel для каждого выпадающего списка.

Оба способа правильные, только:

- первый способ проще в реализации.
- над вторым имеет смысл возится при большом количестве элементов или, если состав списка известен только на этапе выполнения программы.
Записан
SpaceRabbit
Гость
« Ответ #2 : Декабрь 12, 2012, 08:53 »

1. Можно формировать выпадающие списки вручную, обрабатывая события выбора элементов в них.
2. Можно сформировать одну модель данных и использовать QSortFilterProxyModel для каждого выпадающего списка.
Спасибо, а можно ссылку или пример? Событие выбора - это какое? И как формируется эта модель?
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4744



Просмотр профиля WWW
« Ответ #3 : Декабрь 12, 2012, 12:22 »

1. void QComboBox::currentIndexChanged ( int index ) [signal] или void QComboBox::currentIndexChanged ( const QString & text ) [signal]
2. void QComboBox::setModel ( QAbstractItemModel * model ) Модель наследуется от QAbstract*ItemModel и переопределяются нужные тебе методы.
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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