一、常规流程
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 ) );
18、设置单元格背景颜色
//设置单元格(0,0)背景颜色为红色
m_pTable_Model->item(0, 0)->setBackground(QBrush(QColor(255, 0, 0)));
19、按照某列进行排序
m_pTable_Model->sort(col, Qt::DescendingOrder);
//升序:Qt::AscendingOrder
//降序:Qt::DescendingOrder