QTableView
1. 表头
水平表头:horizontalHeader()
垂直表头:verticalHeader()
表头字段个数:count();
2. 绑定模型:setModel()
3. 获取绑定的模型:selectionModel()
4. 委托:setItemDelegate(new ItemDelegate(this));
5. 信号
表头点击:sectionClicked(int)
单元格点击:clicked(const QModelIndex&)
模型改变:currentChanged(const QModelIndex&, const QModelIndex&)
QTableWidget
1. 表头字体
QFont font = horizontalHeader()->font();
font.setBold(true);
horizontalHeader()->setFont(font);
2. 表头字段
QStringList header;
header<<"姓名"<<"年龄";
setHorizontalHeaderLabels(header);
3. 表头单元格
QTableWidgetItem *hearderItem = horizontalHeaderItem(0); // 获得水平方向表头的Item对象
hearderItem->setFont(QFont("Helvetica")); // 设置字体
hearderItem->setBackgroundColor(QColor(0,60,10)); // 设置单元格背景颜色
hearderItem->setTextColor(QColor(200,111,30)); // 设置文字颜色
4. 单元格
setItem(0,0,new QTableWidgetItem(QIcon("images/IED.png"), "Jan's month"));
或者
QTableWidgetItem *item = new QTableWidgetItem("Apple");
item->setFont(QFont("Helvetica")); // 设置字体
item->setBackgroundColor(QColor(0,60,10)); // 设置单元格背景颜色
item->setTextColor(QColor(200,111,30)); // 设置文字颜色
setItem(0, 0, item);
5. 点击单元格信号
void itemClicked(QTableWidgetItem*)
6. 当前行
currentIndex().row();
7. 单元格修改
QModelIndex index = model->index(0, 0); // 0行0列单元格
model->setData(index, QVariant::fromValue(100));
8. 单元格控件
QComboBox *comBox = new QComboBox();
comBox->addItem("Y");
comBox->addItem("N");
setCellWidget(0, 1, comBox);
9. 合并单元格
setSpan(0, 0, 3, 1); // 要改变单元格的 1行数 2列数 要合并的 3行数 4列数
显示
1. 显示所有
model->select();
2. 显示指定查询结果
model->setFilter("name=1");
3. 排序
model->setSort(1,Qt::AscendingOrder);// 升序排列,第0列
model->setSort(0,Qt::DescendingOrder); // 降序
4. 隐藏某列数据
hideColumn(0);
5. 滚动条
QTableView::horizontalScrollBar()/verticalScrollBar()
6. 滚动:
QTableView::verticalScrollBar()->setSliderPosition(); // 设置当前滑动条的位置
QTableView::verticalScrollBar()->maximum(); // 滑动条能移动的最大位置
QTableView::verticalScrollBar()->value(); // 获得当前滑动条的位置
7. 大小
行/列大小:setColumnWidth()/setRowHeight()
包裹内容:resizeColumnsToContents()/resizeRowsToContents()
最大宽度:setMaximumWidth(100);
对齐:setDefaultAlignment(Qt::AlignVCenter | Qt::AlignRight);
表头大小:setDefaultSectionSize(100);