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()函数来隐藏。比如:
表头隐藏前:
表头隐藏后:
如果要去掉表格中间的线条,是由showGrid这个属性来决定的,选择修改改属性,去掉网格线条:
去掉后的效果:
上面的图标都还很小,原先用的QTableWidgetItem。现在数据条目采纳的是完全自定义的SearchItem,尺寸大概是100*60,比较大,那么默认情况下,QTableView的Cell就容纳不下了,条目都挤在一起,见下图:
要设置QTableView的单元格尺寸,可以使用QHeaderView::ResizeSection(),也可以使用setColumnWidth(), setRowHeight()。两种方法的效果是一样的。以下代码中被注释掉的部分和其上面的几行代码具有相同的效果:
以上都是逐行、逐列地设置,比较麻烦。如果要整体设置,可以用resizeColumnsToContents(),和resizeRowsToContents()。
有必要说一下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();
相关文章推荐
- 自定义模型SearchModel ------ Model-View-Control(MVC)架构(9)
- QListView ------ Model-View-Control(MVC)架构(1)
- 自定义模型SearchModel ------ Model-View-Control(MVC)架构(7)
- 自定义SearchItem类 ------ Model-View-Control(MVC)架构(5)
- 自定义委托(代理)SearchDelegate ------ Model-View-Control(MVC)架构(6)
- 各种模型的比较 ------ Model-View-Control(MVC)架构(2)
- 自定义模型SearchModel ------ Model-View-Control(MVC)架构(8)
- QAbstractTableModel ------ Model-View-Control(MVC)架构(3)
- SpingMVC ModelAndView, Model,Control以及参数传递
- 用C#实现MVC(Model View Control)模式介绍
- 用C#实现MVC(Model View Control)模式介绍
- MVC教程:MVC---View处理页面;Control处理业务逻辑;Model处理数据
- 用C#实现MVC(Model View Control)模式介绍
- 用C#实现MVC(Model View Control)模式介绍
- 用C#实现MVC(Model View Control)模式介绍
- SpingMVC ModelAndView, Model,Control以及参数传递
- Introduction to Model View Control (MVC) Pattern using C#
- 用C#实现MVC(Model View Control)模式介绍
- Qt MVC View Model Control /Delegate
- 【框架篇】mvc、mvp、mvvm使用关系总结 原创 2016年03月27日 10:04:21 标签:android /架构 9837 MVC MVC全名是Model View Controller,