首页 > 其他分享 >QTableView的样式设置和常用函数

QTableView的样式设置和常用函数

时间:2023-02-01 21:33:15浏览次数:53  
标签:QHeaderView 函数 tableView 样式 表头 QTableView 选中 设置

QTableView用于显示二维数据,常常与QStandardItemModel结合使用。

目录

样式设置

  1. 设置单元格中的样式,可以对QStandardItem的数据项角色设置值
  2. 设置表头(包含行表头和列表头),使用QHeaderView
  3. 设置表格显示效果,使用QTableView
  4. 设置滚动区域QSrollBar,使用QScrollBar,参考QScrollBar的样式设置即可

表头样式设置

当前样式代码是在数据项样式的基础上进行的设置,将代码中模型行列数修改为5行3列。
初始效果如下图所示:

图片名称
图片名称
//设置表头每段的背景颜色、字体颜色、边框颜色
QHeaderView::section
{
background-color:yellow;//背景颜色
color:red;//字体颜色
border-top:0px;//上下边框
border-bottom:2px solid #00FF00;
}
QHeaderView::section:first//表头第一个单元格设置右边框
{
border-right:1px solid #FF0000;
}
QHeaderView::section:middle//表头中间单元格设置右边框
{
border-right:1px solid #FF0000;
}
QHeaderView::section:last//表头最后一个单元格设置右边框
{
border-right:0px solid #FF0000;
}

或者指定表头:

ui->tableView->horizontalHeader()->setStyleSheet("QHeaderView::section {...}");

效果如下:

图片名称

表头样式设置注意事项

  1. 表头样式的设置需要使用::section,否则每段设置不成功
  2. 表头样式的设置中若不设置border边框,则表头有凸起的效果,并且点击除表头外的其他地方,表头会有阴影出现。(即使设置border:none也不会出现凸起效果)图片名称
  3. 表头QHeaderView满足盒子模型,因此可以设置padding以及margin等属性
  4. 设置了表头字体时表头字体样式不改变怎么处理?
    //ui->tableView->setFont(font);//不起作用,不能设置表头字体样式
    ui->tableView->horizontalHeader()->setFont(font);//可以设置,但是需要手动调整一下,可能是Qt的Bug
    
    手动调整一下字体大小,可能才有效果: 图片名称 具体效果: 图片名称
  5. 表头内部线条(如横表头)可以设置左边框和右边框,设置左边框可能会与单元格对不齐。

表格样式设置

图片名称
ui->tableview->setAlternatingRowColors(true);//交替颜色才起作用

QTableView
{
background-color:rgb(240,240,240);//背景颜色
alternate-background-color:rgb(73,112,236);//交替颜色(需要设置tableview->setAlternatingRowColors(true))
gridline-color:#FF0000;//表格线颜色
selection-color:#00FF00;//选中前景色
selection-background-color:blue;//选中背景色
}
图片名称

常用函数

model相关

QStandardtemModel *model =  new QStandardtemModel();//创建模型
model->setHorizontalHeaderLabels(stringList);//设置水平表头

tableView相关

//(选中设置)设置选中模式:如ExtendedSelection类似于excel中的选中方法,ctrl+press多个选中,shift+press选中当前到前面选中item之间覆盖的矩形区域
tableView->setSelectionMode()

//(选中区域)设置选中单个item、某行row、某列column
tableview->setSelectionBehavior()

//(选中操作)设置项的触发方式,如双击触发编辑模式,DoubleClicked。其中tableView->openPersistentEditor()可设置持续处于编辑模式
tableview->setEditTriggers()

//(选中效果):不会出现虚线框
tableView->setFocusPolicy(Qt::NoFocus)

//设置字体
tableView->setFont()//设置字体

headerView相关

//获取表头指针
QHeaderView* horView = ui->tableView->horizontalHeader();
verticalHeader
QHeaderView* verView = ui->tableView->verticalHeader();
//设置表头伸展模式(拖动、固定、自动延展、随内容扩展)
header->setSectionResizeMode(QHeaderView::Stretch)
   QHeaderView::Interactive//可使用resizeSection()函数设置,也可以用户拖动
   QHeaderView::Fixed//只能使用resizeSection()函数设置,用户不可改
   QHeaderView::Stretch//(用过)自动将tableview填充满
   QHeaderView::ResizeToContents//自动对齐到内容,不能代码设置或者用户拖动

//设置表头最后一行是否延展到边界
header->setStretchLastSection(true);

//设置section的固定大小。设置固定的列宽要在view->seModel(model);之后进行设置,不然无效
header->setDefaultSectionSize();

//设置表头文字的对齐方式
header->setDefaultAlignment(Qt::AlignLeft);

//设置表头不可选中
header->setSectionsClickable(false);

//设置表头不可移动;
header->setSectionsMovable(false);

//设置标头高亮(每次点击单元格对应的表头段文字会加粗高亮显示)
header->setHighlightSections(true);

1. 列宽设置说明

标签:QHeaderView,函数,tableView,样式,表头,QTableView,选中,设置
From: https://www.cnblogs.com/wsw2022/p/17081136.html

相关文章

  • mysql字符串函数 lpad() : 补‘0’没有显示,补‘1’显示的情况
    更新时使用lpad():补‘0’没有显示,补‘1’显示的,发生这种情况的原因可能是在使用lpad()函数时,第一个参数的字段类型不是字符类型,例如是int类型的字段,那么填充'0'是不会生......
  • mysql-聚合函数
    一、聚合函数1.常见的几个聚合函数1.1AVG/SUMAVG:求平均数SUM:求总和selectAVG(salary),SUM(salary)fromemployees;1.2MAX/MINmax/min:适用于时间类型,字符......
  • MySQL基础-函数
    1.介绍函数是指一段可以直接被另一段程序调用的程序或代码。2.常用字符串函数 案例:根据需求完成以下SQL编写由于业务需求变更,企业员工的工号,统一为......
  • cctype 函数
    1*1.编写一个程序,读取键盘输入直到遇到@符号为止,并回显输入(数字除外),同时将大写字2转换为小写,将小写字符转换为大写(别忘了cctype函数系列)3......
  • js防抖函数
    1、使用场景:例如:搜索框搜索输入。只需用户最后一次输入完,再发送请求2、函数防抖的要点:需要一个 setTimeout 来辅助实现,延迟运行需要执行的代码。如果该方法多......
  • [oeasy]python0068_ 字体样式_正常_加亮_变暗_控制序列
    字体样式回忆上次内容上次了解了一个新的转义模式\33逃逸控制字符escesc让输出退出标准输出流进行控制信息的设置可以清屏也可以设置光标输出的位置......
  • [oeasy]python0068_ 字体样式_正常_加亮_变暗_控制序列
    字体样式回忆上次内容上次了解了一个新的转义模式\33逃逸控制字符escesc让输出退出标准输出流进行控制信息的设置可以清屏也可以设置光标输出的位置还能做什么呢?可......
  • C语言-printf函数
    转换字符参数类型;转换结果cchar;字符dint;有符号十进制整数i同上edouble;以指数形式输出单、双精度浮点数(小写e)E同上(大写E)fdo......
  • Oracle 函数listagg
    --可以实现将多列记录聚合为一列记录,实现数据的压缩--基本语法:listagg(xxx,xxx)withingroup(orderbyxxx)--selectid,name,sex,scorefromstudentorderbyid......
  • 常见非指纹built-in函数
    unescapeunescape()_函数_可对通过escape()编码的字符串进行解码。unescape("abcdefg")'abcdefg'unescape("\xa2")'¢'unescape("Vistit%20W3school%21")'Vistit......