很高兴在雪易的CSDN遇见你
VTK技术爱好者 QQ:870202403 公众号:VTK忠粉
前言
本文分享QTableWidget在使用过程中的常用方法、以及QTableWidget的样式设计技术。希望对各位小伙伴有所帮助!
感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步!
你的点赞就是我的动力(^U^)ノ~YO
目录
》设置表格单元显示QComBox、QSpinBox、QLable、QDateTimeEdit等
QTableWidget常用方法
》创建一个新的表格控件
QTableWidget *table=new QTableWidget();
》设置设置/获取列数,设置行数同样方法
int colnum = table->columnCount();//获取列数
table->setColumnCount(3); //设置列数,内容若大于3列,则大于部分不显示。
table->insertColumn(0);//方法2 添加列
》表头设置
QStringList header; //QString类型的List容器
header<<"学号"<<"姓名"<<"性别"; //设置内容是学号、姓名、性别
table->setHorizontalHeaderLabels(header); //设置表头内容
table->horizontalHeader()->setVisible(false); //设置水平表头不可见
table->verticalHeader()->setVisible(false); //设置垂直表头不可见
QFont font ;//定义一个字体变量
font.setBold(true); //设置粗体
table->horizontalHeader()->setFont(font);//设置表头的字体属性
table->horizontalHeader()->setFixedHeight(25); //设置表头的高度为25
table->horizontalHeader()->resizeSection(0,180); //设置表头第1列的宽度为180
table->verticalHeader()->setDefaultSectionSize(10); //设置行高为10
//先自适应宽度
table->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
//然后设置要根据内容使用宽度的列
table->horizontalHeader()->setSectionResizeMode(0, QHeaderView::ResizeToContents);
》设置表格文字内容
QTableWidgetItem *name=new QTableWidgetItem();//创建一个Item
name->setText("桃花庵");//设置内容
table->setItem(0,1,name);//把这个Item加到第一行第二列中
//为table中添加int类型的数据时
table->setItem(i,j,new QTableWidgetItem(QString::number(i+1)));
//获取表格文字内容
QTableWidgetItem * currItem = table->item(i,j);
QString str = currItem->text();
》设置表格单元显示QComBox、QSpinBox、QLable、QDateTimeEdit等
//创建一个QDateTimeEdit
QDateTimeEdit *dateTimeEdit= new QDateTimeEdit();
dateTimeEdit->setDateTime(QDateTime::currentDateTime());//设置为当前时间
dateTimeEdit->setDisplayFormat("dd/M/yyyy");//设置显示格式
dateTimeEdit->setCalendarPopup(true);//设置可以打开日历
table->setCellWidget (1,2,dateTimeEdit);//加到第二行第三列中
//添加QComboBox控件
QComboBox *lvRangeComboBox = new QComboBox();
lvRangeComboBox->addItem(tr("7"));
lvRangeComboBox->addItem(tr("8"));
lvRangeComboBox->addItem(tr("9"));
lvRangeComboBox->addItem(tr("10"));
lvRangeComboBox->setCurrentText(QString::number(currData.iLvRange));
table->setCellWidget(i,5,lvRangeComboBox);
//添加CheckBox控件
QTableWidgetItem* p_check = new QTableWidgetItem();
p_check->setCheckState(Qt::Checked); //设置首列为 CheckBox 控件
table->setItem(i,12,p_check);
》其它设置
》设置选择行为时每次一行
table->setSelectionBehavior(QAbstractItemView::SelectRows);
》设置对行可进行多选
//可多选(Ctrl、Shift、Ctrl+A都可以)
table->setSelectionMode(QAbstractItemView::ExtendedSelection);
》设置表格内容不能编辑
table->setEditTriggers(QAbstractItemView::NoEditTriggers);
》合并单元格
//void setSpan(int row, int column, int rowSpan, int columnSpan);
tableWidget->setSpan(1, 1, 2, 2);
QTableWidget样式设计
》QTableWidget样式包含
外框:QTableWidget
表头:QHeaderView
表头字段:QHeaderView::section
表格:QTableWidget::item
选中的表格:QTableWidget::item::selected
水平滚动条:QTableWidget QScrollBar::horizontal
垂直滚动条:QTableWidget QScrollBar::vertical
水平滚动条的滑动块:QTableWidget QScrollBar::handle:horizontal
垂直滚动条的滑动块:QTableWidget QScrollBar::handle : vertical
水平滚动条的滑动块悬浮:QScrollBar::handle : vertical : horizontal
垂直滚动条的滑动块悬浮:QScrollBar::handle : vertical : hover
滑动块的上方边缘方块:QTableWidget QScrollBar::add - line
滑动块的下方边缘方块:QTableWidget QScrollBar::sub - line
滑动块的上部分滑道:QTableWidget QScrollBar::add - page
滑动块的下部分滑道:QTableWidget QScrollBar::sub - page
》代码进行样式设计
QTableWidgetItem* item = new QTableWidgetItem("Apple");
item->setBackgroundColor(QColor(0, 60, 10));//设置单元格的背景颜色
item->setTextColor(QColor(200, 111, 100));//设置单元格文字的颜色
item->setFont(QFont("Helvetica"));//设置单元格文字的字体
table->setItem(0, 3, item);
table->setFrameShape(QFrame::NoFrame); //设置无边框
table->setShowGrid(false); //设置不显示格子线
table->setStyleSheet("selection-background-color:rgb(34, 170, 75);"); //设置选中行的背景色
table->horizontalHeader()->setStyleSheet("QHeaderView::section{background:skyblue;}"); //设置表头的背景色
//设置水平滚动条的样式
table->horizontalScrollBar()->setStyleSheet("QScrollBar{background:transparent; height: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;}");
//设置垂直滚动条的样式
table->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;}");
》QSS样式表设计
#tableWidget{
border: none;
background: none;
selection - background - color: #00bb9e;
}
QHeaderView
{
border - bottom:2px solid #00bb9e;
}
QHeaderView::section
{
color:white;
background:#00bb9e;
border - top:0px solid white;
min - height:40px;
max - height:40px;
}
#tableWidget::Item{
border:none;
border - bottom:1px solid #00bb9e;
height:80px;
}
#tableWidget::item::selected
{
font: bold;
background:#00bb9e;
}
结论:
QTableWidget在使用过程中的常用方法、以及QTableWidget的样式设计技术
感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步!