Доброго времени суток=)
У меня есть таблица QTableWidget. Для её ячеек я создаю делегат ItemComboDateDelegate, чтобы редактировать ячейки с помощью календаря QCalendarWidget.
Код файла itemcombodatedelegate.cpp
#include "itemcombodatedelegate.h"
#include <QComboBox>
#include <QDebug>
#include <QCheckBox>
#include <QCalendarWidget>
ItemComboDateDelegate::ItemComboDateDelegate(QObject *parent) :
QItemDelegate(parent)
{
}
QWidget *ItemComboDateDelegate::createEditor(QWidget *parent, const QStyleOptionViewItem &option,
const QModelIndex &index) const
{
qDebug()<<"createEditor";
QCalendarWidget *calendar=new QCalendarWidget(parent);
return calendar;
}
void ItemComboDateDelegate::updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option,
const QModelIndex &index) const
{
qDebug()<<"setGeometry";
}
void ItemComboDateDelegate::setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const
{
qDebug()<<"setModelData";
QCalendarWidget *calendar = static_cast<QCalendarWidget*>(editor);
QDate value = calendar->selectedDate();
model->setData(index,value,Qt::EditRole);
}
Мне нужно чтобы при клике на календарь, он тут же исчезал и нужное значение записывалось в ячейку.
У меня же это происходит только когда я кликаю по другой ячейке таблицы.
Я так понимаю что надо как-то отлавливать событие клика по календарю и в нём уже делать всё что нужно??словить клик, я могу, но как реализовать остальное?
Помогите, пожалуйста=)