我们还是使用前面一直在用的 student 表,直接来看代码:
正如的代码所示,我们在main()
函数中创建了QSqlTableModel
对象,使用 student 表。student 表有三列:id,name 和 age,我们选择按照 name 排序,使用函数达到这一目的。然后我们设置每一列的列头。这里我们只使用了后两列,第一列没有设置,所以依旧显示为列名 id。
接下来运行代码即可看到效果:
如果看到代码中很多“魔术数字”,更好的方法是,使用一个枚举将这些魔术数字隐藏掉,这也是一种推荐的方式:
- {
- Column_ID = 0,
- Column_Name = 1,
- Column_Age = 2
- };
- int main(int argc, char *argv[])
- {
- QApplication a(argc, argv);
- if (connect("demo.db")) {
- model->setTable("student");
- model->setSort(Column_Name, Qt::AscendingOrder);
- model->setHeaderData(Column_Name, Qt::Horizontal, "Name");
- model->setHeaderData(Column_Age, Qt::Horizontal, "Age");
- model->select();
- QTableView *view = new QTableView;
- view->setModel(model);
- view->setSelectionMode(QAbstractItemView::SingleSelection);
- view->setSelectionBehavior(QAbstractItemView::SelectRows);
- view->resizeColumnsToContents();
- view->setEditTriggers(QAbstractItemView::NoEditTriggers);
- QHeaderView *header = view->horizontalHeader();
- header->setStretchLastSection(true);
- view->show();
- } else {
- return 1;
- }
- }