c++ - 如何使表格的列可编辑?

标签 c++ qt sqlite

我正在尝试制作一个表格,允许用户根据某些标准输入满分 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/

相关文章:

c++ - unsigned char (*pArray[10][10])的含义;

c++ - 如何在WIN32中找到字符串的宽度(以像素为单位)

qt - 添加项目时如何保持项目 View 滚动到底部?

python - 如何在 PyQt 中的 QGraphicsView 旁边添加菜单栏(QMainWindow)?

django - (数据库错误: no such table: django_session) ERROR during Django 1. 3 Selenium 测试

c++ - 为什么这是有效的? (具有不同参数的模板类的模板友元函数)

c++ - 常量 char 不断转换为 int

c++ - 我如何检测两个文件条目是否引用与 Qt 相同的物理文件系统?

python - Sqlite3 不会获取数据库行,尽管它们存在

sql - 如何选取每组的前N行?