我正在尝试制作一个表格,允许用户根据某些标准输入满分 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++ - 如何使表格的列可编辑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22779971/