Russian Qt Forum
Июля 07, 2025, 22:52 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: [4.4.3] QCalendarWidget::setCurrentPage(int,int) как-то неверно работает.  (Прочитано 6940 раз)
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5877


Жаждущий знаний


Просмотр профиля WWW
« : Ноября 05, 2008, 18:17 »

Прилагаю экзампл, там все понятно. Смысл такой - хочу создать календарик на весь год, т.е. на виджет кидается 12 календарей и при изменении даты в каком-либо из них, должна изменяться дата в других. Косяк в том, что все работает, если изменять дату в одном календаре, а вот если изменить в другом, сразу ТАКОЕ начинается... Если использовать setSelectedDate(), то все нормально. Вот только 12 выделенных дней мне совсем не нужно.
Собственно вопрос: как победить ошибку или как убрать выделение?
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #1 : Ноября 05, 2008, 19:34 »

а вот если изменить в другом, сразу ТАКОЕ начинается...
Я так понимаю они бесконечно обновлятся начинают, обратная связь глухая. Если так, то глянь пример
examples\widgets\sliders
там можно любой тип ползунка двигать и остальные движутся вместе с ним, но ужасов не происходит.
Записан

Юра.
spirit
Гость
« Ответ #2 : Ноября 05, 2008, 19:37 »

ужасы происходят потому, что из модели выгребается невалидный индекс, соответственно и год отрицательный.
я бы алгоритм пересмотрел бы.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5877


Жаждущий знаний


Просмотр профиля WWW
« Ответ #3 : Ноября 05, 2008, 19:38 »

Ты экзампл собирал? Ничего бесконечно не обновляется, так как коннекты перед установкой currentPage я закрываю. Тут в другом проблема.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5877


Жаждущий знаний


Просмотр профиля WWW
« Ответ #4 : Ноября 05, 2008, 19:40 »

ужасы происходят потому, что из модели выгребается невалидный индекс, соответственно и год отрицательный.
я бы алгоритм пересмотрел бы.
Вот тут я немного не понял. Где невалидный индекс? Если сделать qDebug(QString::number(year).toLocal8Bit()) в начале setDates(), то и он выводит минусовую дату.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
spirit
Гость
« Ответ #5 : Ноября 05, 2008, 19:48 »

поставь бряку в строке 53, и перейди в слот QCalendarWidget::setCurrentPage, затем попадаетм в QCalendarWidgetPrivate::showMonth и ставим там бряку. (бряку из строки 53 можно убрать). затем меняем дату в другом календаре: срабатывает бряка в QCalendarWidgetPrivate::showMonth, смотрим по стеку какой метод ее вызвал, оказывается метод QCalendarWidgetPrivate::_q_nextMonthClicked, ставим тут бряку. (предыдущую можно убрать, чтобы 12 раз ф5 не жать Улыбающийся). затем заходим в метод QCalendarWidgetPrivate::getCurrentDate и получаем невалидный индекс.  Улыбающийся
как-то завернуто написал.  Смеющийся

в общем можно сразу открыть qcalendarwidget.cpp и поставить бряку в строке 1797, метод QCalendarWidgetPrivate::getCurrentDate.
(номер строки может быть другой в сырцах 4.4.3, т.к. у меня 4.3.5)
« Последнее редактирование: Ноября 05, 2008, 19:50 от spirit » Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #6 : Ноября 05, 2008, 19:59 »

2 panter_dsd, а вложение чего-то не качается, все время example.htm скачивается Грустный
Записан

Юра.
spirit
Гость
« Ответ #7 : Ноября 05, 2008, 20:02 »

так переименуй в zip, у меня тоже html был  Подмигивающий
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5877


Жаждущий знаний


Просмотр профиля WWW
« Ответ #8 : Ноября 05, 2008, 20:28 »

spirit: Что-то сегодня торможу, можешь поподробнее о том кто виноват и что делать?
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
spirit
Гость
« Ответ #9 : Ноября 05, 2008, 20:33 »

карент индекс не устанавливается. вот ты писал, что если заюзать QCalendarWidget::setSelectedDate, то все ок, так и есть, потому что если пошагать по этому методу, то можно увидеть, что карент индекс устанавливается.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5877


Жаждущий знаний


Просмотр профиля WWW
« Ответ #10 : Ноября 05, 2008, 20:39 »

Так что мне делать? setSelectedDate не катит из-за того, что он выделает число, а мне выделение не нужно.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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