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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: делегат QDateEdit с Понедельника  (Прочитано 6557 раз)
break
Гипер активный житель
*****
Offline Offline

Сообщений: 846


Просмотр профиля
« : Май 15, 2009, 04:37 »

Здесь на форуме нашел что народ уже сталкивался но решение было только для случая "не делегата"
В делегате оно у меня не заработало

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


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

Записан
Barmaglodd
Гость
« Ответ #1 : Май 15, 2009, 11:23 »

"Делегат" - это QItemDelegate для QAbstractItemView? Если да, то надо от него наследоваться, и самому подсовывать для дат календарь с нужным первым днём недели. Но насколько я помню, там в стандартном делегате нет выпадающего календарика.
З.Ы. Вообще даты и локализация у Qt почему-то больное место Грустный
Записан
break
Гипер активный житель
*****
Offline Offline

Сообщений: 846


Просмотр профиля
« Ответ #2 : Май 15, 2009, 12:03 »

Да блин епт... - подсунул естественно свой класс наследник QItemDelegate - код взял то ли с форума то ли с ассистента - есть там у меня календарик, но сделать с пон. не могу!!!
Записан
Barmaglodd
Гость
« Ответ #3 : Май 15, 2009, 12:16 »

В createEditor() создаёшь DateEdit и ему устанавливаешь календарик
Записан
Rcus
Гость
« Ответ #4 : Май 15, 2009, 12:18 »

Не работать может по-разному, что именно не работает?
Записан
break
Гипер активный житель
*****
Offline Offline

Сообщений: 846


Просмотр профиля
« Ответ #5 : Май 15, 2009, 13:04 »

Не работает чтобы у календарика(кот. в делегате) понедельник был первым днем!
« Последнее редактирование: Май 15, 2009, 13:35 от break » Записан
Rcus
Гость
« Ответ #6 : Май 15, 2009, 13:19 »

Я не просто так спросил, потому что у меня были обоснованные сомнения в том что описание соответствует действительности, поскольку мои тесты с QStyledItemDelegate::createEditor дали необходимый результат.
/*sigh, goes away*/
Записан
break
Гипер активный житель
*****
Offline Offline

Сообщений: 846


Просмотр профиля
« Ответ #7 : Май 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;
}
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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