12 : QSqlRelationalDelegate(parent)
18 const int textMargin = QApplication::style()->pixelMetric(QStyle::PM_FocusFrameHMargin) + 1;
19 QRect newRect = QStyle::alignedRect(option.direction, Qt::AlignCenter,
20 QSize(option.decorationSize.width() +
21 5,option.decorationSize.height()),
22 QRect(option.rect.x() + textMargin, option.rect.y(),
24 (2 * textMargin), option.rect.height()));
28void TableDelegate::paint(QPainter *painter,
const QStyleOptionViewItem &option,
const QModelIndex &index)
const
30 QStyleOptionViewItem viewItemOption(option);
37 QSqlRelationalDelegate::paint(painter, viewItemOption, index);
42 return QSqlRelationalDelegate::sizeHint(option, index);
49 QStyleOptionViewItem optionCheckable = option;
51 optionCheckable.features |= QStyleOptionViewItem::HasCheckIndicator;
52 return QSqlRelationalDelegate::editorEvent(event, model, optionCheckable, index);
54 return QSqlRelationalDelegate::editorEvent(event, model, option, index);
64 QStyleOptionViewItem optionCheckable = option;
65 optionCheckable.features |= QStyleOptionViewItem::HasCheckIndicator;
67 return QSqlRelationalDelegate::createEditor(parent, optionCheckable, index);
69 return QSqlRelationalDelegate::createEditor(parent, option, index);
92 : QSqlRelationalTableModel(parent, db)
94 this->setEditStrategy(QSqlTableModel::OnFieldChange);
104 QVariant d = QSqlRelationalTableModel::data(index, role);
105 if (role == Qt::DisplayRole) {
107 return QDateTime::fromSecsSinceEpoch(d.toInt()).toString();
112 else if (role == Qt::CheckStateRole) {
114 if (d.toInt() == 0) {
115 return Qt::Unchecked;
128 if (
m_booleanColumns.contains(index.column()) && role == Qt::CheckStateRole) {
130 if (
value == Qt::Checked) {
132 return QSqlTableModel::setData(index, 1, Qt::EditRole);
134 }
else if (
value == Qt::Unchecked) {
136 return QSqlTableModel::setData(index, 0, Qt::EditRole);
140 bool response = QSqlTableModel::setData(index,
value, role);
146 Qt::ItemFlags f = QSqlRelationalTableModel::flags((index));
148 f |= Qt::ItemIsUserCheckable;
float value(const T *src, size_t ch)
QRect getNewRect(const QStyleOptionViewItem &option)
TableDelegate(QObject *parent)
QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const override
QVector< int > m_dateTimeColumns
void addDateTimeColumn(int column)
bool editorEvent(QEvent *event, QAbstractItemModel *model, const QStyleOptionViewItem &option, const QModelIndex &index) override
QVector< int > m_booleanColumns
void setEditable(bool editable)
QWidget * createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const override
void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const override
void addBooleanColumn(int column)
TableModel(QObject *parent=nullptr, QSqlDatabase db=QSqlDatabase())
QVector< int > m_dateTimeColumns
QVector< int > m_booleanColumns
Qt::ItemFlags flags(const QModelIndex &index) const override
bool setData(const QModelIndex &index, const QVariant &value, int role) override
void addBooleanColumn(int column)
void addDateTimeColumn(int column)
QVariant data(const QModelIndex &index, int role=Qt::DisplayRole) const override