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

Qt的QTableWidget样式设置

在 Qt 中,可以通过样式表(QSS)为 QTableWidget 设置各种样式。以下是一些常见的样式设置示例:

1. 基本样式设置

tableWidget->setStyleSheet(// 表格整体样式"QTableWidget {""   background-color: #F0F0F0;"  // 背景色"   gridline-color: #C0C0C0;"     // 网格线颜色"   border: 1px solid gray;"     // 边框"}"// 表头样式"QHeaderView::section {""   background-color: #404040;"  // 表头背景"   color: white;"               // 文字颜色"   padding: 4px;"               // 内边距"   border: 1px solid #505050;"  // 边框"   min-height: 25px;"           // 最小高度"}"// 单元格样式"QTableWidget::item {""   color: #333333;"            // 文字颜色"   border-bottom: 1px solid #D0D0D0;"  // 底部边框"}"// 选中状态"QTableWidget::item:selected {""   background-color: #B8D6FF;"  // 选中背景色"   color: black;"               // 选中文字颜色"}"
);

2. 高级样式设置

// 交替行颜色(需要开启交替行颜色功能)
tableWidget->setAlternatingRowColors(true);
tableWidget->setStyleSheet("QTableWidget { alternate-background-color: #F8F8F8; }"
);// 角部按钮样式(表格左上角按钮)
tableWidget->setStyleSheet("QTableCornerButton::section {""   background-color: #404040;""   border: 1px solid #505050;""}"
);// 禁用状态样式
tableWidget->setStyleSheet("QTableWidget:disabled {""   color: #808080;""   background-color: #F0F0F0;""}"
);// 设置特定列宽/行高
tableWidget->horizontalHeader()->setDefaultSectionSize(150);  // 列宽
tableWidget->verticalHeader()->setDefaultSectionSize(30);     // 行高

3. 自定义单元格样式

// 通过代理自定义样式(需要继承 QStyledItemDelegate)
class CustomDelegate : public QStyledItemDelegate {
public:void paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const override {// 自定义绘制逻辑if(index.column() == 0) {painter->fillRect(option.rect, QColor("#FFE4E1"));}QStyledItemDelegate::paint(painter, option, index);}
};// 设置代理
tableWidget->setItemDelegate(new CustomDelegate());

4. 动态样式设置

// 修改特定行颜色
for(int row = 0; row < tableWidget->rowCount(); ++row) {QTableWidgetItem* item = tableWidget->item(row, 0);if(item) {item->setBackground(QColor("#E6F3FF"));item->setForeground(Qt::blue);}
}// 设置特定单元格样式
QTableWidgetItem* specialItem = new QTableWidgetItem("Important");
specialItem->setData(Qt::UserRole, "special");
tableWidget->setItem(0, 0, specialItem);// 在样式表中添加特殊样式
tableWidget->setStyleSheet("QTableWidgetItem[special=\"true\"] {""   background-color: #FFD700;""   font-weight: bold;""}"
);

5. 完整样式表示例

tableWidget->setStyleSheet(R"(QTableWidget {background-color: #FFFFFF;alternate-background-color: #F8F8F8;gridline-color: #E0E0E0;border: 1px solid #D0D0D0;font-size: 12px;}QHeaderView::section {background-color: #0078D4;color: white;padding: 4px;border: none;min-height: 28px;}QHeaderView::section:hover {background-color: #006CBC;}QHeaderView::section:pressed {background-color: #005AA3;}QTableWidget::item {border-bottom: 1px solid #E0E0E0;padding: 4px;}QTableWidget::item:selected {background-color: #B8D6FF;color: #000000;}QTableCornerButton::section {background-color: #0078D4;border: none;}QScrollBar:vertical {width: 12px;background: #F0F0F0;}QScrollBar::handle:vertical {background: #C0C0C0;min-height: 20px;}
)");

注意事项:

  1. 样式表优先级高于代码设置的属性
  2. 使用 alternate-background-color 需要先调用 setAlternatingRowColors(true)
  3. 复杂的样式建议使用 QSS 文件管理
  4. 对于性能敏感的场景,避免频繁修改样式表
  5. 可以使用 Qt Style Sheet Reference 查看所有可用属性
http://www.lryc.cn/news/536176.html

相关文章:

  • Moretl 增量文件采集工具
  • dedecms 开放重定向漏洞(附脚本)(CVE-2024-57241)
  • 深入理解 MyBatis 框架的核心对象:SqlSession
  • ndk 编译opencv(去除libandroid.so mediandk依赖)
  • MySQL索引和其底层数据结构介绍
  • No module named ‘posepile.util‘
  • SQL布尔盲注、时间盲注
  • RocketMQ与kafka如何解决消息丢失问题?
  • Uniapp 获取定位详解:从申请Key到实现定位功能
  • 【Vue3 入门到实战】14. telePort 和 Suspense组件
  • Golang的并发编程案例详解
  • IS-IS 泛洪机制 | LSP 处理流程
  • 原型模式详解(Java)
  • 内存条2R×4 2400和4R×4 2133的性能差异
  • 安装并配置 MySQL
  • 常用的网络安全设备
  • 【蓝桥】线性DP--最快洗车时间
  • Spring Boot比Spring多哪些注解?
  • springboot021校园周边美食探索及分享平台
  • 【网络通信】传输层之UDP协议
  • Python环境搭建与量化交易开发:从基础到实战
  • 软著申请(六)软著返修流程【2025年最新版】
  • SOUI基于Zint生成Code11码
  • sqlilabs第八关
  • 基于HAL库的按钮实验
  • DeepSeek 突然来袭,AI 大模型变革的危机与转机藏在哪?
  • prompt技术结合大模型 生成测试用例
  • 【C++ 真题】P2920 [USACO08NOV] Time Management S
  • pip安装指定版本的包
  • 【pytest】获取所有用例名称并存于数据库