Russian Qt Forum

Qt => Model-View (MV) => Тема начата: break от Май 15, 2009, 04:37



Название: делегат QDateEdit с Понедельника
Отправлено: break от Май 15, 2009, 04:37
Здесь на форуме нашел что народ уже сталкивался но решение было только для случая "не делегата"
В делегате оно у меня не заработало

Код:
QCalendarWidget* cw = new QCalendarWidget();
cw->setFirstDayOfWeek(Qt::Monday);
ui.deResearchDate->setCalendarWidget(cw);


использую Qt 4.5.0, хотел уточнить - что-то можно сделать или только в следующих версиях? (писать с нуля календарикн не буду - нет времени, но если есть готовый дайте ссылку плиз)



Название: Re: делегат QDateEdit с Понедельника
Отправлено: Barmaglodd от Май 15, 2009, 11:23
"Делегат" - это QItemDelegate для QAbstractItemView? Если да, то надо от него наследоваться, и самому подсовывать для дат календарь с нужным первым днём недели. Но насколько я помню, там в стандартном делегате нет выпадающего календарика.
З.Ы. Вообще даты и локализация у Qt почему-то больное место :(


Название: Re: делегат QDateEdit с Понедельника
Отправлено: break от Май 15, 2009, 12:03
Да блин епт... - подсунул естественно свой класс наследник QItemDelegate - код взял то ли с форума то ли с ассистента - есть там у меня календарик, но сделать с пон. не могу!!!


Название: Re: делегат QDateEdit с Понедельника
Отправлено: Barmaglodd от Май 15, 2009, 12:16
В createEditor() создаёшь DateEdit и ему устанавливаешь календарик


Название: Re: делегат QDateEdit с Понедельника
Отправлено: Rcus от Май 15, 2009, 12:18
Не работать может по-разному, что именно не работает?


Название: Re: делегат QDateEdit с Понедельника
Отправлено: break от Май 15, 2009, 13:04
Не работает чтобы у календарика(кот. в делегате) понедельник был первым днем!


Название: Re: делегат QDateEdit с Понедельника
Отправлено: Rcus от Май 15, 2009, 13:19
Я не просто так спросил, потому что у меня были обоснованные сомнения в том что описание соответствует действительности, поскольку мои тесты с QStyledItemDelegate::createEditor дали необходимый результат.
/*sigh, goes away*/


Название: Re: делегат QDateEdit с Понедельника
Отправлено: break от Май 15, 2009, 13:35
Все! Нашел способ задать стартовый день для выпадающего календарика в делегате даты : (до этого промахнулся немного):

Код:
QWidget * CDE_Delegate::createEditor( QWidget * parent,
const QStyleOptionViewItem& /* option */,
const QModelIndex& /* index */) const
{
QDateEdit * editor = new QDateEdit( parent );

        editor->setCalendarPopup( m_bCalendarPopup ); // надо сначала установить возможность выпадания календарика, а потом уже ставить для него QCalendarWidget
QCalendarWidget * pCW = new QCalendarWidget();
pCW->setFirstDayOfWeek( Qt::Friday );
editor->setCalendarWidget( pCW );

editor->setDisplayFormat( "dd.MM.yyyy" );
//editor->setCalendarPopup( m_bCalendarPopup ); // -- раньше было так и выдавался ворнинг QDateTimeEdit::setCalendarWidget: calendarPopup is set to false -- кот. я к сож. не сразу заметил
editor->installEventFilter( const_cast<CDE_Delegate*>(this) );
return editor;
}