QSqlRelationalDelegate setEditorData frage..

Alles rund um die Programmierung mit Qt
Antworten
patrik08
Beiträge: 746
Registriert: 27. Februar 2006 10:48
Wohnort: DE Freiburg

QSqlRelationalDelegate setEditorData frage..

Beitrag von patrik08 »

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 .....

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);
    }
}

.........................
speack português italiano deutsch english castellà qt
Antworten