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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QComboBox и другие роли  (Прочитано 3056 раз)
blood_shadow
Гость
« : Март 16, 2011, 19:29 »

Добрый вечер,
извиняюсь, может быть за глупый вопрос, но не понял как задавать другие роли (> UserRole)
для комбобокса, например из примера "Basic Drawing Example":

Код
C++ (Qt)
penStyleComboBox->addItem(tr("Solid"), Qt::SolidLine);
 
получить значения перечисления можно так:
Код
C++ (Qt)
Qt::PenStyle style = Qt::PenStyle(penStyleComboBox->itemData(
            penStyleComboBox->currentIndex(), Qt::UserRole).toInt());

это все понятно, но в доке сказано следующее:
"If you need to store different data in the same index, you can use different roles by simply incrementing the value of Qt::UserRole,
for example: 'Qt::UserRole + 1' and 'Qt::UserRole + 2'. However, it is a good programming practice to give each role their own name:
'myFirstRole = Qt::UserRole + 1' and 'mySecondRole = Qt::UserRole + 2'. "

Вопрос - так как задать при добавлении итемов другую роль, допустим сделать:
Код
C++ (Qt)
penStyleComboBox->addItem(tr("Dash"), Qt::DashLine);
 
но только Qt::DashLine запихнуть не с Qt::UserRole, а с newRole(Qt::UserRole + 1)?
Записан
serg_hd
Хакер
*****
Offline Offline

Сообщений: 668



Просмотр профиля
« Ответ #1 : Март 16, 2011, 22:17 »

penStyleComboBox->addItem(tr("Dash"), Qt::UserRole + 1); или что? Почти ничего не понял из вопроса что требуется(
Записан

kubuntu/Win7/x64/NetBeans
blood_shadow
Гость
« Ответ #2 : Март 16, 2011, 22:40 »

penStyleComboBox->addItem(tr("Dash"), Qt::UserRole + 1); или что? Почти ничего не понял из вопроса что требуется(
нет, допустим я задаю свойства QPen и храню их в комбобоксе
Код
C++ (Qt)
penStyleComboBox->addItem(tr("Solid"), Qt::SolidLine);
так Qt::SolidLine храниться в комбобоксе как Qt::UserRole
в доке сказано что пользовательские данные можно хранить под значением Qt::UserRole или выше
Код
C++ (Qt)
newRole = Qt::UserRole + 1
вопрос в том как сохранить тот Qt::SolidLine в комбобоксе под newRole:
Записан
Paullo
Гость
« Ответ #3 : Март 16, 2011, 23:27 »

setItemData ( int index, const QVariant & value, int role = Qt::UserRole ) не подойдёт?
Записан
blood_shadow
Гость
« Ответ #4 : Март 16, 2011, 23:37 »

setItemData ( int index, const QVariant & value, int role = Qt::UserRole ) не подойдёт?
да оно, спасибо  Улыбающийся
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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