Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Пантер от Ноября 05, 2008, 18:17



Название: [4.4.3] QCalendarWidget::setCurrentPage(int,int) как-то неверно работает.
Отправлено: Пантер от Ноября 05, 2008, 18:17
Прилагаю экзампл, там все понятно. Смысл такой - хочу создать календарик на весь год, т.е. на виджет кидается 12 календарей и при изменении даты в каком-либо из них, должна изменяться дата в других. Косяк в том, что все работает, если изменять дату в одном календаре, а вот если изменить в другом, сразу ТАКОЕ начинается... Если использовать setSelectedDate(), то все нормально. Вот только 12 выделенных дней мне совсем не нужно.
Собственно вопрос: как победить ошибку или как убрать выделение?


Название: Re: [4.4.3] QCalendarWidget::setCurrentPage(int,int) как-то неверно работает.
Отправлено: lit-uriy от Ноября 05, 2008, 19:34
а вот если изменить в другом, сразу ТАКОЕ начинается...
Я так понимаю они бесконечно обновлятся начинают, обратная связь глухая. Если так, то глянь пример
examples\widgets\sliders
там можно любой тип ползунка двигать и остальные движутся вместе с ним, но ужасов не происходит.


Название: Re: [4.4.3] QCalendarWidget::setCurrentPage(int,int) как-то неверно работает.
Отправлено: spirit от Ноября 05, 2008, 19:37
ужасы происходят потому, что из модели выгребается невалидный индекс, соответственно и год отрицательный.
я бы алгоритм пересмотрел бы.


Название: Re: [4.4.3] QCalendarWidget::setCurrentPage(int,int) как-то неверно работает.
Отправлено: Пантер от Ноября 05, 2008, 19:38
Ты экзампл собирал? Ничего бесконечно не обновляется, так как коннекты перед установкой currentPage я закрываю. Тут в другом проблема.


Название: Re: [4.4.3] QCalendarWidget::setCurrentPage(int,int) как-то неверно работает.
Отправлено: Пантер от Ноября 05, 2008, 19:40
ужасы происходят потому, что из модели выгребается невалидный индекс, соответственно и год отрицательный.
я бы алгоритм пересмотрел бы.
Вот тут я немного не понял. Где невалидный индекс? Если сделать qDebug(QString::number(year).toLocal8Bit()) в начале setDates(), то и он выводит минусовую дату.


Название: Re: [4.4.3] QCalendarWidget::setCurrentPage(int,int) как-то неверно работает.
Отправлено: spirit от Ноября 05, 2008, 19:48
поставь бряку в строке 53, и перейди в слот QCalendarWidget::setCurrentPage, затем попадаетм в QCalendarWidgetPrivate::showMonth и ставим там бряку. (бряку из строки 53 можно убрать). затем меняем дату в другом календаре: срабатывает бряка в QCalendarWidgetPrivate::showMonth, смотрим по стеку какой метод ее вызвал, оказывается метод QCalendarWidgetPrivate::_q_nextMonthClicked, ставим тут бряку. (предыдущую можно убрать, чтобы 12 раз ф5 не жать :)). затем заходим в метод QCalendarWidgetPrivate::getCurrentDate и получаем невалидный индекс.  :)
как-то завернуто написал.  ;D

в общем можно сразу открыть qcalendarwidget.cpp и поставить бряку в строке 1797, метод QCalendarWidgetPrivate::getCurrentDate.
(номер строки может быть другой в сырцах 4.4.3, т.к. у меня 4.3.5)


Название: Re: [4.4.3] QCalendarWidget::setCurrentPage(int,int) как-то неверно работает.
Отправлено: lit-uriy от Ноября 05, 2008, 19:59
2 panter_dsd, а вложение чего-то не качается, все время example.htm скачивается :(


Название: Re: [4.4.3] QCalendarWidget::setCurrentPage(int,int) как-то неверно работает.
Отправлено: spirit от Ноября 05, 2008, 20:02
так переименуй в zip, у меня тоже html был  ;)


Название: Re: [4.4.3] QCalendarWidget::setCurrentPage(int,int) как-то неверно работает.
Отправлено: Пантер от Ноября 05, 2008, 20:28
spirit: Что-то сегодня торможу, можешь поподробнее о том кто виноват и что делать?


Название: Re: [4.4.3] QCalendarWidget::setCurrentPage(int,int) как-то неверно работает.
Отправлено: spirit от Ноября 05, 2008, 20:33
карент индекс не устанавливается. вот ты писал, что если заюзать QCalendarWidget::setSelectedDate, то все ок, так и есть, потому что если пошагать по этому методу, то можно увидеть, что карент индекс устанавливается.


Название: Re: [4.4.3] QCalendarWidget::setCurrentPage(int,int) как-то неверно работает.
Отправлено: Пантер от Ноября 05, 2008, 20:39
Так что мне делать? setSelectedDate не катит из-за того, что он выделает число, а мне выделение не нужно.