Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: blood_shadow от Март 16, 2011, 19:29



Название: QComboBox и другие роли
Отправлено: 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)?


Название: Re: QComboBox и другие роли
Отправлено: serg_hd от Март 16, 2011, 22:17
penStyleComboBox->addItem(tr("Dash"), Qt::UserRole + 1); или что? Почти ничего не понял из вопроса что требуется(


Название: Re: QComboBox и другие роли
Отправлено: blood_shadow от Март 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:


Название: Re: QComboBox и другие роли
Отправлено: Paullo от Март 16, 2011, 23:27
setItemData ( int index, const QVariant & value, int role = Qt::UserRole ) не подойдёт?


Название: Re: QComboBox и другие роли
Отправлено: blood_shadow от Март 16, 2011, 23:37
setItemData ( int index, const QVariant & value, int role = Qt::UserRole ) не подойдёт?
да оно, спасибо  :)