如何使表的列可编辑
How to make a column of a table editable?
我正在尝试制作一个表格,允许用户在给定某些条件的情况下输入 10 分中的分数。我连接到我的SQLite数据库,并在左侧检索一列用于描述标准,并在右侧检索一列,我希望能够输入成绩(可编辑列)。这是我的代码:
QSqlQueryModel *model = new QSqlQueryModel();
QSqlQuery* qry = new QSqlQuery(conn.mydb);
qry->prepare("select I.itemDescription, S.grade from Items I, ItemsToStudent S where I.itemID = S.itemID and I.rubricID = ? and S.courseID = ? and S.studentID = ?");
qry->addBindValue(actid);
qry->addBindValue(courseid);
qry->addBindValue(studentid);
qry->exec();
model->setQuery(*qry);
ui->rubricTable->setModel(model);
但是,我无法使第二列可编辑。我将如何实现这一目标?
QSqlQueryModel
类为 SQL 结果集提供只读数据模型。您可以使用以下QSqlRelationalTableModel
:
QSqlRelationalTableModel *model = new QSqlRelationalTableModel(this,conn.mydb);
model->setEditStrategy(QSqlTableModel::OnFieldChange);
model->setJoinMode(QSqlRelationalTableModel::LeftJoin);
model->setTable( "Items" );
model->setRelation( 0, QSqlRelation( "ItemsToStudent", "itemID", "grade" ) );
model->setFilter( QString("rubricID = ? and courseID = ? and studentID = ?") );
model->select();
model->setHeaderData( 1, Qt::Horizontal, tr("Criteria") );
model->setHeaderData( 2, Qt::Horizontal, tr("Grade") );
ui->rubricTable->setModel(model);
您还可以隐藏不想显示的列,如下所示:
ui->rubricTable_tbl->hideColumn(3);
相关文章:
- 在 c++ 中编辑注册表项
- 如何从 winapi 中的编辑表单获取文本?
- 如何使我的链表在C++中向后打印
- 如何应用注册表模式使"select class depend on input"遵守开放封闭原则?
- 如何使QLineEdit编辑在文本来自QPushButton时启用
- 如何通过将其添加到注册表中来使我的程序运行
- 从c++调用lua函数时,如何使表和变量值保持不变
- 如何使链表与类的多个实例一起工作
- 如何使TCP套接字与SO_BINDTODEVICE(针对路由表)一起工作
- 如何使运算符++继续到链表中的下一个节点指针
- 问题:如何使动态添加的项目在设计时不符合样式表集
- 如何使链表具有子节点
- 禁用其他应用程序编辑注册表项
- 如何使 QTabWidget 可与表单展开
- 使用脚本编辑 Windows xp 注册表
- 使QTableWidget可逐行编辑,就像MS访问一样
- 不断更新GUI表单元素,使表单不会挂起
- 如何在QTableView中使某列不可编辑,使某列可编辑
- 以编程方式编辑QSS样式表
- 如何使表的列可编辑