Именно. Всё должно работать по умолчанию.
1. У меня сейчас при двойном клике появляется
пустой QLineEdit.
2. После редактирования текст в представление (в ячейку) не передаётся.
Qt 4.3.1.
this->FAPValuesModel = new FAParamValuesModel(this->FAPManager, this);
ui.FAPValuesView->setModel(this->FAPValuesModel);
ui.FAPValuesView->setAlternatingRowColors(true);
ui.FAPValuesView->resizeColumnsToContents();
ui.FAPValuesView->resizeRowsToContents();
Модель FAParamValuesModel - моя. Никаких своих делегатов не устанавливаю...
Согласен по умолчанию все правильно работает, если правильно создана модель( в данном случае - FAPValuesModel ). А в этом у меня большие сомнения. Что то напутал с реализацией функций data и setData.
Немного поправленный пример $(QTDIR)/examples/itemviews/spinboxdelegate работает на ура.
Правленый main.cpp:
/****************************************************************************
**
** Copyright (C) 2004-2007 Trolltech ASA. All rights reserved.
**
** This file is part of the example classes of the Qt Toolkit.
**
** Licensees holding a valid Qt License Agreement may use this file in
** accordance with the rights, responsibilities and obligations
** contained therein. Please consult your licensing agreement or
** contact
sales@trolltech.com if any conditions of this licensing
** agreement are not clear to you.
**
** Further information about Qt licensing is available at:
**
http://www.trolltech.com/products/qt/licensing.html or by
** contacting
info@trolltech.com.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
****************************************************************************/
/*
main.cpp
A simple example that shows how a view can use a custom delegate to edit
data obtained from a model.
*/
#include <QApplication>
#include <QHeaderView>
#include <QItemSelectionModel>
#include <QStandardItemModel>
#include <QTableView>
#include "delegate.h"
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QStandardItemModel model(4, 2);
QTableView tableView;
tableView.setModel(&model);
// SpinBoxDelegate delegate;
// tableView.setItemDelegate(&delegate); for (int row = 0; row < 4; ++row) {
for (int column = 0; column < 2; ++column) {
QModelIndex index = model.index(row, column, QModelIndex());
model.setData(index, QVariant(QString::number((row+1) * (column+1)) + "A")); }
}
tableView.setWindowTitle(QObject::tr("Spin Box Delegate"));
tableView.show();
return app.exec();
}