Название: сортировка по длительности (решено) Отправлено: theorist от Июль 27, 2010, 20:30 здравствуйте!
хочу заставить QSortFilterProxyModel упорядочивать данные по колонке с длительностью (количеством часов, минут и секунд). ограничения: 1. у минут и часов не должно быть впереди нулей 2. если длительность менее часа, то часы не показывать, а показывать только минуты и секунды 3. если длительность менее минуты, то показывать 0 минут и соответствующее количество секунд пробовал записывать в модель длительность как H:mm:ss (http://doc.trolltech.com/4.6/qtime.html#toString), если длительность не менее часа, и как m:ss - если менее часа, но, поскольку упорядочивание для QString осуществляется в алфавитном порядке, то, например, длительность 5:20 оказывается больше, чем 12:09, так как первая цифра у неё больше. как быть? ??? Название: Re: сортировка по длительности Отправлено: BlackTass от Июль 27, 2010, 21:04 либо писать свой компарер, либо просто хранить в численном виде длительность (и сравнивать тоже), а выводить ее уже в преобразованном строковом
Название: Re: сортировка по длительности Отправлено: Kolobok от Июль 27, 2010, 22:42 Сохраняй данные в виде QTime.
Название: Re: сортировка по длительности Отправлено: theorist от Июль 28, 2010, 07:29 либо писать свой компарер ... ой, не хочется :-\ неужели в самом Qt нет такого средства?... либо просто хранить в численном виде длительность (и сравнивать тоже), а выводить ее уже в преобразованном строковом разве при упорядочивании и выводе используется не один и тот же метод data() модели-источника?Название: Re: сортировка по длительности Отправлено: theorist от Июль 28, 2010, 07:31 Сохраняй данные в виде QTime. да я бы с радостью, только с ним нули впереди выводятся и часы, даже если их нет, а секунды, наоборот, не выводятся, и если локаль, например, американская, то ещё AM в конце добавляется :(Название: Re: сортировка по длительности Отправлено: Kolobok от Июль 28, 2010, 09:28 да я бы с радостью, только с ним нули впереди выводятся и часы, даже если их нет, а секунды, наоборот, не выводятся, и если локаль, например, американская, то ещё AM в конце добавляется :( Для этого напиши своего делегата. Название: Re: сортировка по длительности Отправлено: theorist от Июль 28, 2010, 13:16 Для этого напиши своего делегата. так и сделал (DurationDelegate - подкласс QStyledItemDelegate):Код: void DurationDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const { |