1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
| #include "datedelegate.h"
#include <QtGui>
#include <QString>
#include <QDate>
DateDelegate::DateDelegate(int durationColumn, QObject *parent) : QItemDelegate(parent)
{
this->durationColumm = durationColumn;
}
QWidget *DateDelegate::createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const
{
if (index.column() == durationColumm )
{
QDateEdit *dateEdit = new QDateEdit(parent);
dateEdit->setDisplayFormat("yyyy-MM-dd");
connect(dateEdit, SIGNAL(editingFinished()),this,SLOT(commitAndCloseEditor()));
return dateEdit;
} else {
return QItemDelegate::createEditor(parent,option,index);
}
}
void DateDelegate::setEditorData(QWidget *editor, const QModelIndex &index) const
{
if (index.column() == durationColumm )
{
QString DateCourante = index.model()->data(index,Qt::DisplayRole).toString();
QDateEdit *dateEdit = qobject_cast<QDateEdit*>(editor);
dateEdit->setDate(QDate::fromString(DateCourante,"yyyy-MM-dd"));
} else {
return QItemDelegate::setEditorData(editor,index);
}
}
void DateDelegate::setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const
{
if (index.column() == durationColumm )
{
QDateEdit *dateEdit = qobject_cast<QDateEdit*>(editor);
QDate date = dateEdit->date();
QString dateformate = date.toString("yyyy-MM-dd");
model->setData(index,dateformate);
} else {
QItemDelegate::setModelData(editor,model,index);
}
}
void DateDelegate::commitAndCloseEditor()
{
QDateEdit *editor = qobject_cast<QDateEdit*>(sender());
emit commitData(editor);
emit closeEditor(editor);
} |
Partager