一、QTableWidget
表格类是Qt中常用的控件,如QTableWidget,QTableView。
QTableWidget是QTableView的子类
主要区别是QTableView可以使用自定义的数据模型来显示内容(即先通过setModel来绑定数据源),
而QTableWidget则只能使用标准的数据模型,并且其单元格数据是QTableWidgetItem的对象来实现的(即无需要数据源,逐个单元格信息填好即可)。QTableWidgetItem用来表示表格中的一个单元格,整个QTableWidget表格都需要用逐个单元格构建起来.
但是笔者认为QTableWidget在数据量比较小、开发周期短的项目情况下要比QTableView更灵活方便。
二、简单使用相关代码
使用时一定添加对相应的头文件!!!
void
testTableView()
{
//设置行列,以及表头内容
ui->
tableWidget->
setColumnCount(
10);
ui->
tableWidget->
setRowCount(
100);
sl
<<
"Id"
<<
"Name"
<<
"Unit"
<<
"Value"
<<
"Min"
<<
"Max"
;
ui->
tableWidget->
setHorizontalHeaderLabels(
sl);
//表头内容填充
//表格属性
//ui->tableWidget->verticalHeader()->setVisible(true);
//
显示/隐藏垂直header
ui->
tableWidget->
setSelectionMode(
QAbstractItemView::
ExtendedSelection);
//
可以选中多个
ui->
tableWidget->
setSelectionBehavior(
QAbstractItemView::
SelectColumns);
//整行选中的方式
ui->
tableWidget->
setEditTriggers(
QAbstractItemView::
NoEditTriggers);
//不可编辑
//设置QTableWidget的样式表(包括表头)
QFont
font;
//定义一个字体变量
font.
setBold(
true);
//设置粗体
ui->
tableWidget->
horizontalHeader()->
setFont(
font);
ui->
tableWidget->
horizontalHeader()->
setStyleSheet(
"QHeaderView::section{background:skyblue;}");
//设置表头背景色
ui->
tableWidget->
setStyleSheet(
"selection-background-color:rgb(34,
170,
75);");
//设置选中行的背景色
//设置表格单元显示QComBox、QSpinBox、QLable、QPushButton
QDateTimeEdit
*
dateTimeEdit=
new
QDateTimeEdit();
//创建一个QDateTimeEdit
dateTimeEdit->
setDateTime(
QDateTime::
currentDateTime());
//设置为当前时间
dateTimeEdit->
setDisplayFormat(
"dd/M/yyyy");
//设置显示格式
dateTimeEdit->
setCalendarPopup(
true);
//设置可以打开日历
ui->
tableWidget->
setCellWidget
(
1,
2,
dateTimeEdit);
//加到第二行第三列中
QPushButton
*
pb
=
new
QPushButton(
"test");
ui->
tableWidget->
setCellWidget(
2,
3,
pb);
//表格填充QPushbutton按键
QComboBox
*
comBox
=
new
QComboBox();
comBox->
addItem(
"Y");
comBox->
addItem(
"N");
ui->
tableWidget->
setCellWidget(
3,
4,
comBox);
//设置单个表格内容,可以设置图片
ui->
tableWidget->
setItem(
0,
1,
new
QTableWidgetItem(
"123456"));
QTableWidgetItem
*
item
=
new
QTableWidgetItem(
"Apple");
item->
setBackgroundColor(
QColor(
100,
100,
100));
item->
setTextColor(
QColor(
200,
100,
50));
item->
setFont(
QFont(
"Helvetica"));
item->
setTextAlignment(
Qt::
AlignHCenter
|
Qt::
AlignVCenter);
//设置对齐
ui->
tableWidget->
setItem(
1,
0,
item);
//合并单元格
ui->
tableWidget->
setSpan(
2,
5,
3,
2);
//其参数为:从坐标为2行5列的单元格,向下合并3行向右合并2列
//还可以将行和列的大小设为与内容相匹配
//
ui->tableWidget->resizeColumnsToContents();
//
ui->tableWidget->resizeRowsToContents();
//设置垂直和水平滚动条样式
//设置垂直滑动条样式表时一定注意width!width!width!
ui->
tableWidget->
verticalScrollBar()->
setStyleSheet(
"QScrollBar{background:transparent;
width:
12px;}"
"QScrollBar::handle{background:lightgray;
border:2px
solid
transparent;
border-radius:5px;}"
"QScrollBar::handle:hover{background:gray;}"
"QScrollBar::sub-line{background:transparent;}"
"QScrollBar::add-line{background:transparent;}");
//设置垂直滑动条样式表时一定注意height!height!height!
ui->
tableWidget->
horizontalScrollBar()->
setStyleSheet(
"QScrollBar{background:transparent;
height:12px;}"
"QScrollBar::handle{background:lightgray;
border:2px
solid
transparent;
border-radius:5px;}"
"QScrollBar::handle:hover{background:red;}"
"QScrollBar::sub-line{background:transparent;}"
"QScrollBar::add-line{background:transparent;}");
}
三、效果
程序运行如图:
四、参考链接