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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Измененный календарь.  (Прочитано 6391 раз)
Archa4
Гость
« : Февраль 24, 2011, 14:19 »

Дали такую задачу:
надо сделать, что бы календарь выглядел вот так:
http://img222.imageshack.us/i/calendarx.jpg/
Я хотел спросить, как лучше это реализовать, так как пока что моя идея - сделать QTableWidget, QCalendarWidget, брать данные о датах с QCalendarWidget и использовать их создавая вид одной клетки, которую потом можно ставить в таблицу с помощью QTableWidget->SetItem(...);
Но по-моему это как-то слишком мудрено, нету ли по проще способы изменить вид каждой клетки в QCalendarWidget, что бы показывать Дату и цифру под ней?
Записан
kirill
Гость
« Ответ #1 : Февраль 24, 2011, 14:28 »

Да можно конечно.
Наслдуйся от QCalendarWidget и перепиши функцию
virtual void paintCell ( QPainter * painter, const QRect & rect, const QDate & date ) const
Записан
Archa4
Гость
« Ответ #2 : Февраль 24, 2011, 14:42 »

Спасибо за быстрый ответ!
Еще вопрос, смогу ли я потом получить доступ к этой цифре по датой?
Записан
kirill
Гость
« Ответ #3 : Февраль 24, 2011, 15:50 »

Спасибо за быстрый ответ!
Еще вопрос, смогу ли я потом получить доступ к этой цифре по датой?

Заведешь переменную класса и получай на здоровье
Записан
Archa4
Гость
« Ответ #4 : Март 08, 2011, 10:34 »

Я извеняюсь за такой вопрос, но не мог бы кто-нибудь небольшой примерчик показать, как примерно хотя бы этот "virtual void paintCell" переписать? А то я даже не знаю с какой стороны за него взяться...
Записан
alexman
Гость
« Ответ #5 : Март 08, 2011, 10:41 »

Код:
class CustomCalendarWidget : public QCalendarWidget
{
public:
     CustomCalendarWidget( QWidget* parent = 0 ) : QCalendarWidget( parent ) {}
        ~CustomCalendarWidget() {}

protected:
        void paintCell( QPainter* painter, const QRect& rect, const QDate& date ) const
        {
              painter->setPen( Qt::black );
              painter->drawText( rect, Qt::AlignCenter, tr("Qt by Nokia") ); //for example
        }
};
Записан
Archa4
Гость
« Ответ #6 : Март 08, 2011, 11:06 »

Код:
class CustomCalendarWidget : public QCalendarWidget
{
public:
     CustomCalendarWidget( QWidget* parent = 0 ) : QCalendarWidget( parent ) {}
        ~CustomCalendarWidget() {}

protected:
        void paintCell( QPainter* painter, const QRect& rect, const QDate& date ) const
        {
              painter->setPen( Qt::black );
              painter->drawText( rect, Qt::AlignCenter, tr("Qt by Nokia") ); //for example
        }
};

попробовал, получил несколько ошибок:
Код:
..\Calendar_forum_v2\/customcalendarwidget.h:17: error: invalid use of incomplete type 'struct QPainter'

..\..\..\NokiaQtSDK\Simulator\Qt\mingw\include/QtGui/qwindowdefs.h:68: error: forward declaration of 'struct QPainter'

..\Calendar_forum_v2\/customcalendarwidget.h:18: error: invalid use of incomplete type 'struct QPainter'

..\..\..\NokiaQtSDK\Simulator\Qt\mingw\include/QtGui/qwindowdefs.h:68: error: forward declaration of 'struct QPainter'
Записан
Archa4
Гость
« Ответ #7 : Март 08, 2011, 11:38 »

Так, с ошибкой вроде разобрался, надо было #include <QPainter> сделать.
Теперь такая вещь:
в оригинале те даты которые от других месяцев (обычно конец предыдущего месяца и начало следующего) они серого цвета, но теперь все даты черного цвета. Как сделать чтобы было как в оригинале? Можно ли где-то посмотреть как этот Void PaintCell выглядел в оригинале, чтобы мой так же изменить?
Записан
alexman
Гость
« Ответ #8 : Март 08, 2011, 17:46 »

В исходниках...
Записан
Archa4
Гость
« Ответ #9 : Март 09, 2011, 10:41 »

Эээ... А где их найти? Я попытался найти вайл QCalendarWidget.cpp, но не нашел такого файла. Есть только QCalendarWidget.h, но в нем толком ничего нет...
Записан
alexman
Гость
« Ответ #10 : Март 09, 2011, 11:43 »

Да ладно Непонимающий У меня в директории '...Qt\4.7.1\src\gui\widgets\' есть файл 'qcalendarwidget.cpp'.
Записан
Archa4
Гость
« Ответ #11 : Март 09, 2011, 11:50 »

эээ... Ну у меня Nokia Qt SDK  модет в этом проблема?
Записан
alexman
Гость
« Ответ #12 : Март 09, 2011, 11:52 »

эээ... Ну у меня Nokia Qt SDK  модет в этом проблема?
Скорее всего! Я не ставил SDK. Видимо в SDK достаточно библиотек + h-файлов.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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