Рассмотрим этот код:
std::vector< std::vector<int> > v;
v.push_back( std::vector<int>( 1, 4 ) );
v.push_back( std::vector<int>( 1, 3 ) );
QComboBox box;
box.addItem( "", QVariant::fromValue<std::vector<int>>( v[0] ) );
box.addItem( "", QVariant::fromValue<std::vector<int>>( v[1] ) );
int pos = box.findData( QVariant::fromValue<std::vector<int>>(v[0]) );
pos
равно -1
, хотя ожидалось 0
.
Ручной поиск (от i
до box.count()
) выполним и работает. Поскольку ( box.itemData( 0 ).value< std::vector<int> >() == v[0] )
неожиданно возвращает true
! Но findData
тоже должен работать!
Примечание. Добавление Q_DECLARE_METATYPE( std::vector<int> );
не помогло
Редактировать 2016/05/03: исправлена ошибка Qt: https://bugreports.qt.io/browse/QTBUG-53152
A
, напримерint
? Это изолирует, связана ли проблема сA
илиstd::vector
. - person anonymous   schedule 29.04.2016int*
, так что, видимо, проблема исходит отstd::vector
- person jpo38   schedule 29.04.2016Q_DECLARE_METATYPE(std::vector<A *>)
? - person anonymous   schedule 29.04.2016std::vector
по умолчанию объявляется сQ_DECLARE_SEQUENTIAL_CONTAINER_METATYPE
- person anonymous   schedule 29.04.2016std::vector<int>
не работает - person jpo38   schedule 02.05.2016