天天看点

QTableView使用心得

一、常规流程

Qt中表格控件,常用的有​

​QTableView​

​​和​

​QTableWidget​

​​,为什么选择使用QTableView呢?因为​

​QTableView​

​支持MVC模式(模型-视图框架)。

QTableView* m_pTable = new QTableView;
QStandardItemModel* m_pTable_Model = new QStandardItemModel;
m_pTable->setModel(m_pTable_Model);      

使用模型-视图框架,在表格中添加数据时,我们只需要在model中插入数据即可,一旦model中的数据发生变化,QTabelView显示就会做相应的变动(观察者模式)。

m_pTable_Model ->setItem(0, 0, new QStandardItem("张三"));
m_pTable_Model ->setItem(0, 1, new QStandardItem("20120202"));
m_pTable_Model ->setItem(0, 2, new QStandardItem("男"));
m_pTable_Model ->setItem(0, 3, new QStandardItem("18"));
m_pTable_Model ->setItem(0, 4, new QStandardItem("计算机学院"));      

二、功能记录

1、设置表头

QStringList qstrListHeader;
qstrListHeader<<tr("测试记录");
m_pTable_Model->setHorizontalHeaderLabels(qstrListHeader);      

2、设置表头颜色

m_pTable->horizontalHeader()->setStyleSheet("QHeaderView::section{background:rgb(0, 85, 127, 75)}");      

3、设置表格隔行换色

m_pTable->setAlternatingRowColors(true);      

4、设置表格扩展

m_pTable->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);      

5、设置最后一列自动填充

m_pTable->horizontalHeader()->setStretchLastSection(true);      

6、设置整行选中

m_pTable->setSelectionBehavior(QAbstractItemView::SelectRows);      

7、设置只读,不可编辑

m_pTable->setEditTriggers(QAbstractItemView::NoEditTriggers);      

8、隐藏最左侧的默认行标号

m_pTable->verticalHeader()->setVisible(false);      

9、获取当前选中行

QModelIndex index = m_pTable->selectionModel()->currentIndex();      

10、表格滚动到指定行

m_pTable->scrollTo(index); //QModelIndex index      

11、切换当前选中行到指定行

m_pTable->selectRow(row);      

12、设置列宽不可变动,即不能通过鼠标拖动增加列宽

m_pTable->horizontalHeader()->setResizeMode(0, QHeaderView::Fixed); //第0列,列宽固定  
m_pTable->horizontalHeader()->setResizeMode(1, QHeaderView::Fixed); //第1列,列宽固定  
m_pTable->horizontalHeader()->setResizeMode(2, QHeaderView::Fixed); //第2列,列宽固定      

13、设置表格的各列的宽度值

m_pTable->setColumnWidth(0,100); //第0列,宽度为100
m_pTable->setColumnWidth(1,200); //第1列,宽度为200
m_pTable->setColumnWidth(2,300); //第2列,宽度为300      

14、在QTableView中使用右键菜单,需启用该属性

m_pTable->setContextMenuPolicy(Qt::CustomContextMenu);      

15、设置单元格文本居中

//设置单元格(0,0)文本居中
m_pTable_Model->item(0, 0)->setTextAlignment(Qt::AlignCenter);      

16、设置单元格背景颜色

//设置单元格(0,0)背景颜色为红色
m_pTable_Model->item(0, 0)->setBackground(QBrush(QColor(255, 0, 0)));      

17、设置单元格文本加粗

//设置单元格(0,0)文本加粗
m_pTable_Model->item(0, 0)->setFont( QFont( "Times", 10, QFont::Black ) );      
//设置单元格(0,0)背景颜色为红色
m_pTable_Model->item(0, 0)->setBackground(QBrush(QColor(255, 0, 0)));      
m_pTable_Model->sort(col, Qt::DescendingOrder);
//升序:Qt::AscendingOrder
//降序:Qt::DescendingOrder      

继续阅读