QT, TableView, редактирование.

DoSOfRedRiver
Дата: 31.05.2015 02:27:30
Здравствуйте. Добавил на форму новый QTableView, замапил на таблицу. Проблема в том, что в программе невозможно отредактировать ячейки. С другими таблицами такой проблемы не было, там редактирование сразу работало. Код:

+
void MethodicWorkWidget::setupMethod3Model() {
        method3Model = new ExtSqlModel(this);
        method3Model->setTable("methodworks3");
        method3Model->setEditStrategy(QSqlTableModel::OnFieldChange);

        int typeInd = method3Model->fieldIndex("typeid");
        method3Model->setRelation(typeInd, QSqlRelation("methodworks3types", "id", "Name"));
        method3Model->setFilter("teacherid="+QString::number(teacherID));//+" AND YearID="+QString::number(yearID));

        method3Model->setHeaderData(typeInd, Qt::Horizontal, tr("Вид"));
        method3Model->setHeaderData(method3Model->fieldIndex("discipline"), Qt::Horizontal, tr("Дисциплина"));
        method3Model->setHeaderData(method3Model->fieldIndex("theme"),      Qt::Horizontal, tr("Тема"));
        method3Model->setHeaderData(method3Model->fieldIndex("date"),       Qt::Horizontal, tr("Дата проведения"));
        method3Model->setHeaderData(method3Model->fieldIndex("value"),      Qt::Horizontal, tr("Балл"));

        ui.label_2->setText(QString::number(teacherID));

        method3Model->setSort(0, Qt::AscendingOrder);

        //populate and check
        if (!method3Model->select()) {
                QMessageBox::critical(NULL, tr("Ошибка обращения к базе"), tr(
                                "Произошла ошибка при выборе руководства:\n")+manageModel->lastError().text());
        }

        ui.method3View->setModel(method3Model);
        ui.method3View->hideColumn(method3Model->fieldIndex("id"));
        ui.method3View->hideColumn(method3Model->fieldIndex("teacherid"));
        ui.method3View->setItemDelegateForColumn(typeInd, new QSqlRelationalDelegate(ui.method3View));
        ui.method3View->resizeColumnsToContents();

        connect(ui.method3AddButton, SIGNAL(clicked()), this, SLOT(method3Add()));
        connect(ui.method3DelButton, SIGNAL(clicked()), this, SLOT(method3Del()));
        ui.method3DelButton->setEnabled(method3Model->rowCount()!=0);

        if(UserInfo::role() == UserInfo::Guest){
                ui.method3AddButton->setEnabled(false);
                ui.method3DelButton->setEnabled(false);
                ui.method3View->setEditTriggers(QAbstractItemView::NoEditTriggers);
        }
}