QSqlRelationalDelegate setEditorData frage..
Verfasst: 2. März 2007 01:35
Ich finde nirgendwo genug beispiele fuer die Delegate und Item View
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 .....
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);
}
}