您的位置:首页 > 编程语言 > Qt开发

QTableView ------ Model-View-Control(MVC)架构(4)

2014-07-21 04:08 447 查看
QTableView也是Qt的模型/视图(Model/View)架构中的一个组成部分,它提供了一个模型/视图框架的表格视图的默认实现。它常常配合QAbstractTableModel数据模型使用,可以用表格的形式显示出二维表格模型中的数据。

有必要说一下QTableView和QListView的区别。后者在Qt里一般只能显示单列数据(如果需要一些设置才能显示多列的话,此处实用为主,不是理论研究,所以未深究),而QTableView本身就是用于显示多列数据的。所以要根据自己的工程实际情况选择合适的工具。

外观

表格的垂直表头用verticalHeader()参数获得,水平表头用horizontalHeader()获得。每行的高度:rowHeight(),每列的宽度:columnWidth()。两个方向的表头都可以用hide()函数来隐藏。比如:

model=new SearchModel(this);
tableView=new QTableView;
tableView->setModel(model);
tableView->verticalHeader()->hide();
tableView->horizontalHeader()->hide();


表头隐藏前:



表头隐藏后:



如果要去掉表格中间的线条,是由showGrid这个属性来决定的,选择修改改属性,去掉网格线条:

tableView->setShowGrid(false);


去掉后的效果:



上面的图标都还很小,原先用的QTableWidgetItem。现在数据条目采纳的是完全自定义的SearchItem,尺寸大概是100*60,比较大,那么默认情况下,QTableView的Cell就容纳不下了,条目都挤在一起,见下图:



要设置QTableView的单元格尺寸,可以使用QHeaderView::ResizeSection(),也可以使用setColumnWidth(), setRowHeight()。两种方法的效果是一样的。以下代码中被注释掉的部分和其上面的几行代码具有相同的效果:

tableView->setColumnWidth(0,100);
tableView->setColumnWidth(1,100);
tableView->setRowHeight(0,60);
tableView->setRowHeight(1,60);
tableView->setRowHeight(2,60);
//    tableView->verticalHeader()->resizeSection(0,60);
//    tableView->verticalHeader()->resizeSection(1,60);
//    tableView->verticalHeader()->resizeSection(2,60);
//    tableView->horizontalHeader()->resizeSection(0,100);
//    tableView->horizontalHeader()->resizeSection(1,100);


以上都是逐行、逐列地设置,比较麻烦。如果要整体设置,可以用resizeColumnsToContents(),和resizeRowsToContents()。

tableView->resizeColumnsToContents();
tableView->resizeRowsToContents();


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: