QTableView是不可编辑的
QT 4.5.2, QTableView is not editable
本文关键字:编辑 QTableView 更新时间:2023-10-16
我只是添加一个新的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);
}
}
如果QAbstractItemModel::flags
结果包含Qt::ItemIsEditable
标志,则该索引是可编辑的。QSqlRelationalTableModel
默认是可编辑的,但是当!index.column() < realColNum-2
条件不满足时,您可以覆盖flags()
并禁用编辑。看来你在那个条件下出错了。注意!
运算符的优先级高于<
。你可能需要index.column() >= realColNum-2
。同时检查realColNum
的值
相关文章:
- QTableView:endMoveRows在模型中重置水平页眉大小
- 在createdialog创建的窗口中捕获用于编辑控件的OnMouseMove消息
- 将QIcon添加到QTableView单元格
- 编辑文件中的文本
- 有没有办法在远程设备上打开和编辑visual Studio 2017解决方案
- SetDlgItemInt 不会更改嵌入资源的编辑框
- 如何在QTableView中排序和更改日期格式
- 我无法在Visual Studio代码中使用CIN输入答案,它说输入您的年龄,但它说只读文本编辑器如何解决这个问题?
- QTableview Search
- C++,Qt:仅在双击后编辑qtablewidget项目
- 编辑字符串以包含括号 c++ 之间的变量
- Arduino函数无法编辑数组
- 调试符号中缺少 QObject 类信息(编辑但存在其他 Qt 类)
- 在qtableView中编辑单元格之后,如何避免使用选项卡键进行编辑模式
- 使用列中的组合框编辑QTableView
- 当委托失去焦点时,取消在 QTableView 中的编辑
- 如何在QTableView中使某列不可编辑,使某列可编辑
- Qt:背景的QtAbstractItemView (QTableView),而编辑一个条目
- 在QTableView中用作编辑器的QComboBox中刷新选项
- QTableView是不可编辑的