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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Хранение id элемента QComboBox  (Прочитано 6678 раз)
ddipp
Гость
« : Февраль 09, 2009, 18:54 »

QComboBox используется для выбора элементов, но у каждого элемента, кроме текста есть id.
Как можно сохранить этот id и однозначно идентифицировать выбранный элемент?
Можно конечно отдельно хранить соответствие id - QComboBox.currentIndex(), но наверное есть лучшие решения?
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #1 : Февраль 09, 2009, 19:14 »

смотря откуда у тебя id, если ты его создаешь при заполнении списка (выпадающего), то проще по индексу.

Если берешь список готовый, например из БД, то можно поступить иначе:
выпадающий список QComboBox'а - списковое представление, которое можно связать с QSqlTableModel, и указать QComboBox'у использовать такой-то столбец для выподающего списка, а другой столбец (в котором id) будешь использовать для своих прочих нужд.
Записан

Юра.
Alex03
Гость
« Ответ #2 : Февраль 09, 2009, 19:42 »

QComboBox используется для выбора элементов, но у каждого элемента, кроме текста есть id.
Как можно сохранить этот id и однозначно идентифицировать выбранный элемент?
Можно конечно отдельно хранить соответствие id - QComboBox.currentIndex(), но наверное есть лучшие решения?
И в
Код:
void addItem ( const QString & text, const QVariant & userData = QVariant() )
и в
Код:
void insertItem ( int index, const QString & text, const QVariant & userData = QVariant() )
есть пераметр userData, в него можно ложить всё что угодно.
Можно и кучу всевозможных данных засунуть в каждый элемент с помощью
Код:
void QComboBox::setItemData ( int index, const QVariant & value, int role = Qt::UserRole )
Ну а доставать всё это можно с помощью:
Код:
QVariant itemData ( int index, int role = Qt::UserRole ) const

P.S. Это касается не только QComboBox-а, но и многих других классов где внутри модель используется.
Записан
ddipp
Гость
« Ответ #3 : Февраль 09, 2009, 20:16 »

Вот это уже полезно. Спасибо, сейчас буду попробовать.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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