qt/LedOK/base/x_timeeditdelegate.cpp
2022-10-27 15:07:45 +08:00

63 lines
1.6 KiB
C++

#include "X_timeEditDelegate.h"
/*
delegate.cpp
A delegate that allows the user to change integer values from the model
using a spin box widget.
*/
#include "X_timeEditDelegate.h"
#include <QTimeEdit>
X_timeEditDelegate::X_timeEditDelegate(QObject *parent)
: QStyledItemDelegate(parent)
{
}
QWidget *X_timeEditDelegate::createEditor(QWidget *parent,
const QStyleOptionViewItem &/* option */,
const QModelIndex & index ) const
{
if(index.column()==1||index.column()==2)
{
QTimeEdit *editor = new QTimeEdit(parent);
editor->setFrame(false);
editor->setAlignment(Qt::AlignHCenter);
editor->setDisplayFormat("hh:mm");
return editor;
}
return nullptr;
}
void X_timeEditDelegate::setEditorData(QWidget *editor,
const QModelIndex &index) const
{
QString value = index.model()->data(index, Qt::EditRole).toString();
QTimeEdit *spinBoxTimeEdit = static_cast<QTimeEdit*>(editor);
QTime qtime=QTime::fromString(value,"hh:mm");
spinBoxTimeEdit->setTime(qtime);
}
void X_timeEditDelegate::setModelData(QWidget *editor, QAbstractItemModel *model,
const QModelIndex &index) const
{
QTimeEdit *spinBoxTimeEdit = static_cast<QTimeEdit*>(editor);
spinBoxTimeEdit->interpretText();
QString value = spinBoxTimeEdit->time().toString("hh:mm");
model->setData(index, value, Qt::EditRole);
}
void X_timeEditDelegate::updateEditorGeometry(QWidget *editor,
const QStyleOptionViewItem &option, const QModelIndex &/* index */) const
{
editor->setGeometry(option.rect);
}