Russian Qt Forum

Qt => Общие вопросы => Тема начата: sidsukana от Июль 22, 2012, 20:19



Название: QComboBox не устанавливается userData
Отправлено: sidsukana от Июль 22, 2012, 20:19
Собственно код

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

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


Название: Re: QComboBox не устанавливается userData
Отправлено: kambala от Июль 22, 2012, 20:27
что показывает?
Код
C++ (Qt)
qDebug() << combobox->itemData(0);


Название: Re: QComboBox не устанавливается userData
Отправлено: sidsukana от Июль 22, 2012, 20:28
Все ложная тревога, там надо же модель юзать :D Эх а без модели было бы куда проще)


Название: Re: QComboBox не устанавливается userData
Отправлено: Fregloin от Июль 23, 2012, 16:03
Какая модель? Читайте матчасть - возвращается тип QVaraint.

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


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

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


Название: Re: QComboBox не устанавливается userData
Отправлено: sidsukana от Июль 24, 2012, 06:47
Какая модель? Читайте матчасть - возвращается тип QVaraint.

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


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

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

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

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

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

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

Код:
combobox->setModel(new QStandardItemModel);
combobox->insertItem(0, "Test", 25); // или combobox->setItemData(0, 25);
int data = combobox->itemData(0).toInt()


Название: Re: QComboBox не устанавливается userData
Отправлено: Fregloin от Июль 24, 2012, 11:08
я юзаю такой подход без всяких моделей, и он почему то работает (странно да? потому как в QComboBox используется модель по умолчанию).
Я храню пары "тескт"=указаетль в comboBox в таком виде, и все отлично работает без использования каких либо кастомных моделей (в моей задаче этого достаточно).
Так что давай без иронии, ага?
Как сделать, оставим на совесть ТС. А он пусть скажет, чей метод помог.


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

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

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

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

Вы форумный тролль? Ну тогда ваш совет мне и в помине не нужен, а по делу, ваш совет не помог. Прочитайте еще раз 1 пост в котором я ясно сказал что использовал все способы. Уж не один и не два года с qt работаю, чтобы на такой ерунде прогореть.


Название: Re: QComboBox не устанавливается userData
Отправлено: Alex_C от Июль 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);
 

И перед тем как наезжать - советую все же хоть немного доку почитать. :)


Название: Re: QComboBox не устанавливается userData
Отправлено: andrew.k от Июль 27, 2012, 00:31
И перед тем как наезжать - советую все же хоть немного доку почитать. :)
точно. че-то чайники совсем охамели  :(