英雄不问,饮水思源~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
https://www.cnblogs.com/mfmdaoyou/p/6851703.html
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
表格类是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;}");
}
程序运行如图: