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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QComboBox не устанавливается userData  (Прочитано 7231 раз)
sidsukana
Гость
« : Июль 22, 2012, 20:19 »

Собственно код

Код:
combobox->insertItem(0, "Test", 25);
int data = combobox->itemData(0).toInt()

В data получаю 0 всегда, чтобы я не ставил в userData параметр. Даже через setItemData. role = 32 во всех случаях. В чем подвох?
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #1 : Июль 22, 2012, 20:27 »

что показывает?
Код
C++ (Qt)
qDebug() << combobox->itemData(0);
Записан

Изучением 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
sidsukana
Гость
« Ответ #2 : Июль 22, 2012, 20:28 »

Все ложная тревога, там надо же модель юзать Веселый Эх а без модели было бы куда проще)
Записан
Fregloin
Супер
******
Offline Offline

Сообщений: 1025


Просмотр профиля
« Ответ #3 : Июль 23, 2012, 16:03 »

Какая модель? Читайте матчасть - возвращается тип QVaraint.

т.е. что бы установить данные


quint32 dataVal = 25;
comboBox->setItemData(0,dataVal); //или как то так, пишу по памяти

получить данные
quint32 dataVal = comboBox->itemData(0).value<quint32>();
Записан
sidsukana
Гость
« Ответ #4 : Июль 24, 2012, 06:47 »

Какая модель? Читайте матчасть - возвращается тип QVaraint.

т.е. что бы установить данные


quint32 dataVal = 25;
comboBox->setItemData(0,dataVal); //или как то так, пишу по памяти

получить данные
quint32 dataVal = comboBox->itemData(0).value<quint32>();

Ога, давай иди так и сделай умник Веселый Первый пост прочитайте, потом ерунду свою пишите.

Более того, даже если бы все было так просто, нафига использовать приведение стандартного типа Веселый? есть метод toInt().

Далее, сами методы говорят о том что там должна быть Item-модель. (QAbstractItemModel), хотя для моего случая  производительность была не важна, и я взял обычный QStandardItemModel.

Закрепим материал, для тех кто наступит на теже грабли, как я и вы.

Код:
combobox->setModel(new QStandardItemModel);
combobox->insertItem(0, "Test", 25); // или combobox->setItemData(0, 25);
int data = combobox->itemData(0).toInt()
« Последнее редактирование: Июль 24, 2012, 06:59 от sidsukana » Записан
Fregloin
Супер
******
Offline Offline

Сообщений: 1025


Просмотр профиля
« Ответ #5 : Июль 24, 2012, 11:08 »

я юзаю такой подход без всяких моделей, и он почему то работает (странно да? потому как в QComboBox используется модель по умолчанию).
Я храню пары "тескт"=указаетль в comboBox в таком виде, и все отлично работает без использования каких либо кастомных моделей (в моей задаче этого достаточно).
Так что давай без иронии, ага?
Как сделать, оставим на совесть ТС. А он пусть скажет, чей метод помог.
Записан
sidsukana
Гость
« Ответ #6 : Июль 24, 2012, 11:19 »

я юзаю такой подход без всяких моделей, и он почему то работает (странно да? потому как в QComboBox используется модель по умолчанию).
Я храню пары "тескт"=указаетль в comboBox в таком виде, и все отлично работает без использования каких либо кастомных моделей (в моей задаче этого достаточно).
Так что давай без иронии, ага?
Как сделать, оставим на совесть ТС. А он пусть скажет, чей метод помог.

Я и есть ТС, ога Веселый ? И еще раз говорю прочти первый пост ВНИМАТЕЛЬНО. Не знаю какую версию ты там используешься, но у меня нет в нем модели по умолчанию.

(странно да? потому как в QComboBox используется модель по умолчанию).

WHAT? у вас 2 пост не состыковывается с 1, в котором вы сказали что там вообще нет модели :\

Вы форумный тролль? Ну тогда ваш совет мне и в помине не нужен, а по делу, ваш совет не помог. Прочитайте еще раз 1 пост в котором я ясно сказал что использовал все способы. Уж не один и не два года с qt работаю, чтобы на такой ерунде прогореть.
« Последнее редактирование: Июль 24, 2012, 11:22 от sidsukana » Записан
Alex_C
Гость
« Ответ #7 : Июль 26, 2012, 21:16 »

Fregloin абсолютно прав - в QComboBox уже есть внутренняя модель по умолчанию. Ее нужно переопределять, если ты что то свое хочешь в ней хранить.
А у тебя не работает по какой то другой причине. Как минимум замени insertItem на addItem. Вот мой работающий код:

Код
C++ (Qt)
   baudRateLE = new QComboBox;
   baudRateLE->setEditable(false);
   baudRateLE->addItem("1200", 1200);
   baudRateLE->addItem("2400", 2400);
   baudRateLE->addItem("4800", 4800);
   baudRateLE->addItem("9600", 9600);
 

И перед тем как наезжать - советую все же хоть немного доку почитать. Улыбающийся
Записан
andrew.k
Гость
« Ответ #8 : Июль 27, 2012, 00:31 »

И перед тем как наезжать - советую все же хоть немного доку почитать. Улыбающийся
точно. че-то чайники совсем охамели  Грустный
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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