Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: SpaceRabbit от Декабрь 12, 2012, 08:19



Название: Формирование ComboBox, с учетом выбранных параметров из другого ComboBox
Отправлено: 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_Устройство список элементов.. но это наверное не правильно, потому как кол-во устройств может быть различным, одно и тоже устройство может иметь разный индекс в списке..


Название: Re: Формирование ComboBox, с учетом выбранных параметров из другого ComboBox
Отправлено: ssoft от Декабрь 12, 2012, 08:45
1. Можно формировать выпадающие списки вручную, обрабатывая события выбора элементов в них.
2. Можно сформировать одну модель данных и использовать QSortFilterProxyModel для каждого выпадающего списка.

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

- первый способ проще в реализации.
- над вторым имеет смысл возится при большом количестве элементов или, если состав списка известен только на этапе выполнения программы.


Название: Re: Формирование ComboBox, с учетом выбранных параметров из другого ComboBox
Отправлено: SpaceRabbit от Декабрь 12, 2012, 08:53
1. Можно формировать выпадающие списки вручную, обрабатывая события выбора элементов в них.
2. Можно сформировать одну модель данных и использовать QSortFilterProxyModel для каждого выпадающего списка.
Спасибо, а можно ссылку или пример? Событие выбора - это какое? И как формируется эта модель?


Название: Re: Формирование ComboBox, с учетом выбранных параметров из другого ComboBox
Отправлено: kambala от Декабрь 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 и переопределяются нужные тебе методы.