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

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

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: QcalendarWidget делегат  (Прочитано 7685 раз)
CJ1
Гость
« : Ноябрь 18, 2012, 18:41 »

Такой теперь вопрос.
Вот я сделал себе QcalendarWidget  как делегат. А как мне при двойном щелчке по числу закрыть его? И чтоб вызвался setEditorData
Записан
CJ1
Гость
« Ответ #1 : Ноябрь 18, 2012, 18:52 »

Он у меня работает, но просто если выбрал число и в сторону нажал, а мне бы набо было при двойном щелчке
Записан
CJ1
Гость
« Ответ #2 : Ноябрь 18, 2012, 20:16 »

Вот смотрите Отнаследовался  я от QcalendarWidget
Код
C++ (Qt)
class calendar: public  QCalendarWidget
{
public:
   explicit calendar(QWidget *parent = 0);
 
private:
   bool event(QEvent *event);
  void mousePressEvent(QMouseEvent *event);
};


А тут я реализую
Код
C++ (Qt)
#include "calendar.h"
 
calendar::calendar(QWidget *parent):QCalendarWidget(parent){}
 
 
void calendar::mousePressEvent(QMouseEvent *event)
{
   QMessageBox::about(0,"","Событие от мышки");
 
 
}
 
 
bool calendar::event(QEvent *event)
{
   if (event->type()  == QEvent::MouseButtonDblClick)
   {
       QMessageBox::about(0,"","Двойной щелчек");
   }
   return QCalendarWidget::event(event);
}
 

Но он не реагирует на событие! Почему?
Записан
CJ1
Гость
« Ответ #3 : Ноябрь 18, 2012, 20:32 »

Ну помогите люди добрые!
Записан
CJ1
Гость
« Ответ #4 : Ноябрь 18, 2012, 20:45 »

Ух ты! если по заголовку QcalendarWidget щелкаешь 2 раза то срабатывает!
А почему по числам не срабатывает?
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #5 : Ноябрь 19, 2012, 00:01 »

предлагаю тебе почитать документацию по этому виджету, особенно раздел сигналов
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
CJ1
Гость
« Ответ #6 : Ноябрь 19, 2012, 08:01 »

Да читал я!
Там только есть сигнал 1 раз кликнуть, или сигнал что дата выбрана, вот этим и пользуюсь! А хотел бы 2 раза клик
Записан
Bepec
Гость
« Ответ #7 : Ноябрь 19, 2012, 08:59 »

Он наследован от QWidget, т.е. ты можешь отнаследовать свой класс и переопределить метод MousePressEvent и отлавливать двойное нажатие.
Так же ты можешь поставить на него eventFilter ( без переопределения) и так же ловить двойное нажатие.

Записан
CJ1
Гость
« Ответ #8 : Ноябрь 19, 2012, 09:32 »

ВООООООООООООТ и я об этом! Я наследовался! И сверху написал! Но двойной щелчок приходит если я щелкну по заголовку календаря! Если же я выбираю дату и щелкаю по ней, то ничего не приходит!!!!!!
Записан
CJ1
Гость
« Ответ #9 : Ноябрь 19, 2012, 09:39 »

Вот пояснения в картинке
Записан
Bepec
Гость
« Ответ #10 : Ноябрь 19, 2012, 09:55 »

Логично. Если мне не изменяет память, та область является QScrollArea(не помню точно, помоему этот тип). Потому фильтр нужно ставить не на него самого, а на viewPort его.
Записан
CJ1
Гость
« Ответ #11 : Ноябрь 19, 2012, 10:15 »

Так! Его viewport это QTableWidget, значит мне надо получить QRect календаря, а в обработчике событий QTableWidget проверить, щелкнул ли пользователь два раза в этом квадрате. Так.
Но тут проблема, как я передам в TableWidget QRect календаря?
Записан
Bepec
Гость
« Ответ #12 : Ноябрь 19, 2012, 10:24 »

Кхм. Более точно ответить на ваш вопрос я не могу. Ибо с календар виджетом не работал вообще.

Могу покопаться в его нутрях, но только если вам это очень надо.

Записан
CJ1
Гость
« Ответ #13 : Ноябрь 19, 2012, 10:26 »

Очень нужно! Спасибо за отзывчивость!
Тут вообще календарь то делегат!
Записан
Bepec
Гость
« Ответ #14 : Ноябрь 19, 2012, 10:31 »

Он виджетом от этого не перестал быть Улыбающийся

PS до вечера посмотрю. Как освобожусь в общем.
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


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