Frage kann ich in meine Editable Qtableview unter delegate ....
void BaseDelegate::setEditorData(QWidget *editor, const QModelIndex &index) const
irgenwelche QWidget reinbasteln? und die sollten die zelle ersetzen?
Da ich die kolonne 0 nicht editiere kann ich dort ein QWidget reinbauen mit einem simplen Qpuschbutton? mit connect....
Sollte dass Gehen? muss man da auf den size irgendwie achten .....
Code: Alles auswählen
class BaseDelegate : public QSqlRelationalDelegate
{
Q_OBJECT
public:
BaseDelegate( QTableView *ta , QObject *parent );
void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const;
QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const;
void setEditorData(QWidget *editor, const QModelIndex &index) const;
void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const;
private slots:
private:
QTableView *tas;
};
void BaseDelegate::setEditorData(QWidget *editor, const QModelIndex &index) const
{
if (index.column() == 11 || index.column() == 7 ) {
QString dateuser = index.model()->data(index, Qt::DisplayRole).toString();
QDateTimeEdit *editorrun = qobject_cast<QDateTimeEdit *>(editor);
if (editorrun) {
editorrun->setDate(QDate::fromString(index.model()->data(index, Qt::EditRole).toString(), "dd.MM.yyyy"));
}
} else {
QItemDelegate::setEditorData(editor, index);
}
}
void BaseDelegate::setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const
{
if (index.column() == 11 || index.column() == 7 ) {
QDateTimeEdit *dateEditor = qobject_cast<QDateTimeEdit *>(editor);
if (dateEditor) {
model->setData(index,dateEditor->date().toString("dd.MM.yyyy"));
}
} else {
QItemDelegate::setModelData(editor, model, index);
}
}