QComboBox |
Здравствуйте, гость ( Вход | Регистрация )
QComboBox |
eldar85 |
15.7.2010, 10:18
Сообщение
#1
|
программист Группа: Участник Сообщений: 283 Регистрация: 2.1.2010 Из: Москва Пользователь №: 1348 Спасибо сказали: 0 раз(а) Репутация: 0 |
Интерисует такая ситуация, нужно создать comboBox в котором будут содержаться города к примеру:
москва питер новосибирск .... и привязать к каждому городу уникальное значение. К примеру выбрав из списка москву в значении получить установленное значение: москва = 123 питер = 345 новосибирск = 678 до этого я делал так
и потом в слоте помещаал в switch() значения городов и при выборе города выдается поочередное число, получается москва=1, питер=2, новосибирск=3... в слоте попадая в свич уже присваивалось значение уникальное города, но это все очень грамоздко, так как иногда городов очень много. нельзя ли сразу как то присвоить значение городу??? |
|
|
BRE |
15.7.2010, 10:28
Сообщение
#2
|
Профессионал Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44 |
Это можно сделать по разному.
Как вариант:
|
|
|
Wlad |
15.7.2010, 10:35
Сообщение
#3
|
Студент Группа: Участник Сообщений: 21 Регистрация: 9.12.2008 Пользователь №: 450 Спасибо сказали: 0 раз(а) Репутация: 1 |
Для привязке к строке можно задать пользовательские данные:
void QComboBox::addItem ( const QString & text, const QVariant & userData = QVariant() ); а потом читать их: QVariant QComboBox::itemData ( int index, int role = Qt::UserRole ) const см. Справку! |
|
|
MoPDoBoPoT |
15.7.2010, 11:02
Сообщение
#4
|
Участник Группа: Участник Сообщений: 172 Регистрация: 7.5.2009 Из: Москва Пользователь №: 738 Спасибо сказали: 44 раз(а) Репутация: 9 |
Еще можно воспользоваться setModel(QAbstractItemModel * model) + setModelColumn(int visibleColumn). Удобно при загрузки данных из БД.
|
|
|
eldar85 |
15.7.2010, 11:10
Сообщение
#5
|
программист Группа: Участник Сообщений: 283 Регистрация: 2.1.2010 Из: Москва Пользователь №: 1348 Спасибо сказали: 0 раз(а) Репутация: 0 |
Это можно сделать по разному. Как вариант:
а каким сигналом вызавать его лучше? |
|
|
Litkevich Yuriy |
15.7.2010, 11:28
Сообщение
#6
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
eldar85 |
15.7.2010, 12:39
Сообщение
#7
|
программист Группа: Участник Сообщений: 283 Регистрация: 2.1.2010 Из: Москва Пользователь №: 1348 Спасибо сказали: 0 раз(а) Репутация: 0 |
слот)) у меня же подгрузиться это все при запуске программы, но когда я буду менять город в этом списке, он же должен сигнал отправить моему слоту...
Сообщение отредактировал eldar85 - 15.7.2010, 12:41 |
|
|
BRE |
15.7.2010, 12:42
Сообщение
#8
|
Профессионал Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44 |
void QComboBox::currentIndexChanged ( const QString & text ) [signal]
В слоте в переменной text получаешь название города и достаешь его id из map. |
|
|
DIMEDROLL |
15.7.2010, 13:52
Сообщение
#9
|
Участник Группа: Участник Сообщений: 165 Регистрация: 28.9.2008 Из: Киев Пользователь №: 304 Спасибо сказали: 23 раз(а) Репутация: 0 |
зачем возится с map'ом если в QComboBox нужная функциональность уже есть
Wlad, правильно сказал, добавляешь:
получаешь
Сообщение отредактировал DIMEDROLL - 15.7.2010, 14:15 |
|
|
Litkevich Yuriy |
15.7.2010, 14:19
Сообщение
#10
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
DIMEDROLL, согласен, так проще. И QVariant позволит помещать множество типов в себя.
|
|
|
Текстовая версия | Сейчас: 28.11.2024, 22:49 |