현재 QTableView
에서 파생 된 클래스에 편집 기능을 추가하려고합니다. 편집 기능을 제공해야하는 사용자 지정 대리자를 추가했습니다. 그러나 위임자의 시작 부분에 간단한 qDebug() << "FieldDelegate::createEditor()";
을 작성하면이 함수가 호출되지 않는다는 것을 알 수 있습니다. 나는 Qt4 문서와 "C++ Gui Programming with QT4"책에서 예제를 살펴 보려고했지만 QTableWidgets
이면서 QTableViews
이 아닌 대표자의 예는 모두 찾을 수있었습니다. 그러나 제 경우에는 사용자 정의 데이터 모델이 필요하므로 QTableWidgetItems
에있는 데이터를 복제하고 싶지는 않습니다. QTableView 편집 방법
- 내가
QAbstractItemModel::setItemDelegate()
가 나는 것도이에서 발생하지 않는 항목을 더블 클릭하면
setEditTriggers(QAbstractItemView::DoubleClicked)
를 사용하여 편집 기능을 활성화하여 사용자 정의 대리자를 추가 :
지금까지 나는 다음과 같은했다 설정. FieldDelegate::createEditor()
은 전혀 호출되지 않습니다.
는 또한 같은 클래스의 edit()
슬롯에 QAbstractItemView
에서 doubleClicked()
신호를 연결했지만, 내가 셀을 두 번 클릭 할 때마다이는 나에게 메시지 edit: editing failed
을 제공합니다.
지금까지 DatabaseModel::data()
메서드에서 Qt::EditRole
보다 다른 역할을 반환하지 않았습니다. 이것은 새로운 데이터를 추가하는 데 사용할 테이블의 맨 아래에 빈 행을 추가하려는 최종 사례와 유사합니다. 이것은 문제를 일으킬 수 있습니까?
DocumentChoiceView::DocumentChoiceView(DatabaseModel * model,
QWidget * parent) :
QTableView(parent),
m_model(model)
{
setShowGrid (false);
setModel(m_model);
setItemDelegate(m_model->delegate().get());
setEditTriggers(QAbstractItemView::DoubleClicked);
connect(this, SIGNAL(doubleClicked(const QModelIndex&)),
this, SLOT(edit(const QModelIndex&)));
verticalHeader()->hide();
}
당신은 모델에서 적절한 플래그를 반환하고 있습니까? http://doc.qt.nokia.com/4.7-snapshot/model-view-programming.html#making-the-model-editable –
@ KimBowlesSørhus : 예, 이것이 문제인 것처럼 보입니다. 나는 튜토리얼에 많은 부분을 집중 시켰고 실제 문서에서는 충분하지 않았다고 생각한다. 모든 것이 이제는 잘됩니다. 이것을 당신이 대답으로 만들면 나는 그것을 받아 들일 것입니다. – LiKao