Доброго времени суток.
Есть задача, получать в программе список всех com-портов и выбирать 3 из них для подключения.
Сначала делал так:
// cbPortName* - объект класса QComboBox
foreach (const QSerialPortInfo &info, QSerialPortInfo::availablePorts()) {
cbPortName1->addItem(info.portName());
cbPortName2->addItem(info.portName());
cbPortName3->addItem(info.portName());
}
И все хорошо, работает. Но здесь можно выбрать один и тот же порт для подключения. И тогда в программе вместо 3-х подключений будет одно и две ошибки.
А можно ли сделать так: список доступных портов в, например, QStringList. Затем мы задаем элементы для первого комбобокса. Пользователь выбирает нужный, и тут надо чтоб создавалась или копия списка минус выбранный или в исходном минусовать. Затем выбираем во втором и еще раз убираем выбранный. Не подскажете, примерно в каком направлении думать? Я так подозреваю, нужно будет парочку слотов писать, но в таком случае как привязать комбобоксы. Если я скажем захочу с третьего начать, затем в первом выбрать и только потом во втором.
Заранее благодарен.
UPD.
Сейчас подумал, что у самого комбобокса есть удаление элемента по индексу. Если скажем сделать один слот на все комбобоксы, на сигнал activated(int), то можно удалить у оставшихся этот элемент. Только как сделать одним слотом пока не представляю. Например, выбрал я во втором боксе элемент1, в первом и третьем его надо удалить. Выбрал я элемент4 в первом, во втором и третьем его надо удалить. Я научился ловить источник сигнала: QComboBox *_comboBox = qobject_cast<QComboBox *> (QObject::sender()); а как мне теперь обратиться к оставшимся - не знаю. Так же интересует другой момент. Скажем выбрал я элемент1 в боксе1. Но промазал (мышь чуток не довел), а хотел элемент2. При выборе элемент2, надо чтоб элемент1 вернулся во все боксы. Заранее благодарен.