我们还是使用前面一直在用的 student 表,直接来看代码:

    正如的代码所示,我们在main()函数中创建了QSqlTableModel对象,使用 student 表。student 表有三列:id,name 和 age,我们选择按照 name 排序,使用函数达到这一目的。然后我们设置每一列的列头。这里我们只使用了后两列,第一列没有设置,所以依旧显示为列名 id。

    接下来运行代码即可看到效果:

    如果看到代码中很多“魔术数字”,更好的方法是,使用一个枚举将这些魔术数字隐藏掉,这也是一种推荐的方式:

    1. {
    2. Column_ID = 0,
    3. Column_Name = 1,
    4. Column_Age = 2
    5. };
    6.  
    7. int main(int argc, char *argv[])
    8. {
    9. QApplication a(argc, argv);
    10. if (connect("demo.db")) {
    11. model->setTable("student");
    12. model->setSort(Column_Name, Qt::AscendingOrder);
    13. model->setHeaderData(Column_Name, Qt::Horizontal, "Name");
    14. model->setHeaderData(Column_Age, Qt::Horizontal, "Age");
    15. model->select();
    16.  
    17. QTableView *view = new QTableView;
    18. view->setModel(model);
    19. view->setSelectionMode(QAbstractItemView::SingleSelection);
    20. view->setSelectionBehavior(QAbstractItemView::SelectRows);
    21. view->resizeColumnsToContents();
    22. view->setEditTriggers(QAbstractItemView::NoEditTriggers);
    23.  
    24. QHeaderView *header = view->horizontalHeader();
    25. header->setStretchLastSection(true);
    26.  
    27. view->show();
    28. } else {
    29. return 1;
    30. }
    31. }