16 #include <QApplication> 19 #include <QMouseEvent> 21 static QRect
CheckBoxRect(
const QStyleOptionViewItem &view_item_style_options) {
22 QStyleOptionButton check_box_style_option;
23 QRect check_box_rect = QApplication::style()->subElementRect(
24 QStyle::SE_CheckBoxIndicator,
25 &check_box_style_option);
26 QPoint check_box_point(view_item_style_options.rect.x() +
27 view_item_style_options.rect.width() / 2 -
28 check_box_rect.width() / 2,
29 view_item_style_options.rect.y() +
30 view_item_style_options.rect.height() / 2 -
31 check_box_rect.height() / 2);
32 return QRect(check_box_point, check_box_rect.size());
41 bool checkValue = index.data(Qt::DisplayRole).toBool();
43 QStyleOptionButton BtnStyle;
44 BtnStyle.state = QStyle::State_Enabled;
48 BtnStyle.state |= QStyle::State_On;
52 BtnStyle.state |= QStyle::State_Off;
55 BtnStyle.direction = QApplication::layoutDirection();
57 QApplication::style()->drawControl(QStyle::CE_CheckBox,&BtnStyle,painter );
61 const QModelIndex &index)
67 Qt::ItemFlags flags = model->flags(index);
68 if (!(flags & Qt::ItemIsEditable) || !(flags & Qt::ItemIsEnabled))
74 QMouseEvent* mouseEvent =
dynamic_cast<QMouseEvent*
>(event);
81 if (mouseEvent->type() != QEvent::MouseButtonRelease || mouseEvent->button() != Qt::LeftButton)
87 bool newState = !(index.data(Qt::EditRole).toBool());
89 return model->setData(index, QVariant(newState), Qt::EditRole);
bool editorEvent(QEvent *event, QAbstractItemModel *model, const QStyleOptionViewItem &option, const QModelIndex &index) override
QmitkDoseVisualStyleDelegate(QObject *parent=nullptr)
void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const override
static QRect CheckBoxRect(const QStyleOptionViewItem &view_item_style_options)