当前位置: 首页 > ai >正文

【QT】QTableView自定义样式:仅显示行间隔、隐藏列间隔、表头样式、表格样式、单行选中等

目录

0.背景

1.详细代码


0.背景

项目需要,我有一个自定义的类Steer_Electrode_Table,是一个QTableView;

记录一下QTableView修改前后的样式,仅供参考

看一下我修改前后的样式对比

1.详细代码

void Steer_Electrode_Table::initTable() {// 设置模型setModel(m_model);//.h定义:QStandardItemModel* m_model;// 设置表头QStringList headers;headers << "序号" << "电极名称" << "电极型号" << "宏触点数量" << "微触点数量" << "植入区域" << "操作";m_model->setHorizontalHeaderLabels(headers);// 隐藏垂直表头verticalHeader()->setVisible(false);// 设置选择行为setSelectionBehavior(QAbstractItemView::SelectRows);setSelectionMode(QAbstractItemView::SingleSelection);// 设置每一列固定宽度setColumnWidth(0, 56);setColumnWidth(1, 80);setColumnWidth(2, 184);setColumnWidth(3, 84);setColumnWidth(4, 84);setColumnWidth(5, 450); setColumnWidth(6, 72);horizontalHeader()->setStretchLastSection(false);//不自动拉伸最后一列//表格样式// 设置表格样式this->setStyleSheet("QTableView {""   background: transparent;""   font-size: 14px;""   font-family: Microsoft YaHei;""   border: none;""   outline: none;""}""QTableView::item {""   border:0px solid rgb(0,0,0);""   border-bottom:2px solid #272727;"//表格行与行之间的间隔线"   padding: 5px;""   background: #424242;""}""QTableView::item:selected {""   background: #7A9165;""   color: #FFFFFF;""   border-bottom: 2px solid #272727 !important;"//表格行与行之间的间隔线"}""QHeaderView {""   background-color: transparent;""}""QHeaderView::section {""   background-color: #343434;""   color: #b8b8b8;""   font-size: 14px;""   font-family: Microsoft YaHei;""   padding: 5px;""   border: none;""   border-bottom: 2px solid #272727;"//表头与表格之间的横线"}");// 其他非样式表设置this->setShowGrid(false);  // 彻底关闭网格线绘制,用于隐藏列间隔线this->setFocusPolicy(Qt::NoFocus);this->horizontalHeader()->setHighlightSections(false); // 选中行时表头不高亮this->setEditTriggers(QAbstractItemView::NoEditTriggers); // 禁止编辑// 设置高度this->verticalHeader()->setDefaultSectionSize(48); // 行高this->horizontalHeader()->setFixedHeight(48);     // 表头高度
}

表格文字居中我是在另一个函数中写的

QStandardItem *Steer_Electrode_Table::setNameItem(const QString &text)
{QStandardItem* item = new QStandardItem(text);item->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter);  // 居中return item;
}//点击某按钮,触发增加一行的操作
void Steer_Electrode_Table::addRow(const QString& name, const QString& model, int macroCount, int microCount, const QString& region) {int row = m_model->rowCount();// 添加行数据m_model->insertRow(row);// 序号列,从1开始QStandardItem* indexItem = new QStandardItem(QString::number(row + 1));indexItem->setTextAlignment(Qt::AlignCenter);indexItem->setEditable(false);m_model->setItem(row, 0, indexItem);// 其他数据列,调用setNameItem使文字居中m_model->setItem(row, 1, setNameItem(name));m_model->setItem(row, 2, setNameItem(model));m_model->setItem(row, 3, setNameItem(QString::number(macroCount)));m_model->setItem(row, 4, setNameItem(QString::number(microCount)));m_model->setItem(row, 5, setNameItem(region));// 操作按钮列setIndexWidget(m_model->index(row, 6), createButtonWidget());
}

参考:

qt中tableWidget中只有行线,没有列线_qt tablewidget 设置表格线-CSDN博客

因为有一些自定义的操作,所以没有附上全部代码,主要还是以参考表格样式为主,有什么问题可以评论区或私信,看到都会回

--END--

http://www.xdnf.cn/news/13886.html

相关文章:

  • python+django/flask成都奥科厨具厂产品在线销售系统
  • Vue中v-if条件渲染的常见陷阱:以金额显示为例
  • Android音视频多媒体开源框架基础大全
  • 基于OpenCV实现实时颜色检测
  • 嵌入式相关开源项目、库、资料------持续更新中
  • Linux 系统性能测试全指南:从磁盘 I/O 到网络带宽的实战方案
  • ArcGIS Pro 3.4 二次开发 - 工作流
  • 【60 Pandas+Pyecharts | 箱包订单数据分析可视化】
  • 数据结构——第二章 线性表之顺序表、单链表
  • NB-IoT-下行基本概率和时频资源分布
  • 城市排水管网液位流量监测系统解决方案
  • 1.14 express小项目 和 用到的 jwt详解
  • 【STM32的通用定时器CR1的CKD[1:0]: 时钟分频因子 (Clock division)】
  • 【PDF】常见纸张字体大小设置指南 / Common Paper Size Font Guidelines
  • 音视频之H.264的句法和语义
  • 基于 Java 的大数据分布式存储在视频会议系统海量数据存储与回放中的应用
  • Flutter Android打包和发布Build APK
  • PROFINET主站S7-1500通过协议网关集成欧姆龙NJ系列TCP/IP主站
  • HarmonyOS 5对React Native有哪些新特性?
  • 50种3D效果演示(OpenGL)
  • Elasticsearch索引wildcard查询
  • C++面试(10)---合并两个排序的链表
  • 历史交易数据涨跌分级
  • 《信号与系统》第 9 章 拉普拉斯变换
  • Chainlink VRF 深度解析与实战
  • 进阶四 带记忆功能的000-255 计数器
  • 基于Python的热门微博数据可视化分析-Flask+Vue
  • 蚂蚁集团法人变更:韩歆毅接任,公司治理的正常安排
  • 第17篇:数据库中间件的弹性伸缩与容量规划实战
  • MySQL库操作