Qt QTableWidget 设置表头样式穿透第一行

本文介绍如何使用 Qt 的 QTableWidget 设置表头背景颜色,并确保样式穿透到第一行,通过设置 CSS 样式实现表头及表格左上角交叉区域的样式统一。

Qt QTableWidget 设置表头样式穿透第一行:

ui.tableWidget->horizontalHeader()->setStyleSheet("QHeaderView::section{background:red;}"); //设置表头背景色
ui.tableWidget->setStyleSheet("QTableCornerButton::section{background:red;}");

在这里插入图片描述

//========== 中间区域 ========== QWidget *centerWidget = new QWidget(); QVBoxLayout *centerLayout = new QVBoxLayout(centerWidget); centerLayout->setSpacing(10); centerLayout->setContentsMargins(0, 0, 0, 0); // 移除默认边距 //机器状态区域 QGroupBox *statusGroup = new QGroupBox("机器状态"); statusGroup->setStyleSheet("QGroupBox { background-color: #F6F6F2; border: 1px solid #ccc; border-radius: 5px; margin-top: 10px;color:#388087; font-weight: bold; }" "QGroupBox::title { subcontrol-origin: margin; left: 10px; padding: 0 3px; background-color:#F6F6F2;font-weight: bold; }"); QHBoxLayout *statusLayout = new QHBoxLayout(statusGroup); machineStatusImage = new QLabel(); machineStatusImage->setAlignment(Qt::AlignCenter); machineStatusImage->setScaledContents(true); machineStatusImage->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); // QLabel* overlayLabel = new QLabel(machineStatusImage); // overlayLabel->setStyleSheet("background-color: transparent; color: red; font-weight: bold;"); // overlayLabel->setText("QT"); // overlayLabel->move(250, 110); // 设置位置 // overlayLabel->adjustSize(); // overlayLabel->setAttribute(Qt::WA_TransparentForMouseEvents); // 允许点击穿透 voltageTable = new QTableWidget(); voltageTable->setColumnCount(3); //voltageTable->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); voltageTable->setHorizontalHeaderLabels({"传感器ID", "传感器名称", "电压值(V)"}); voltageTable->horizontalHeader()->setSectionResizeMode(0, QHeaderView::ResizeToContents); voltageTable->horizontalHeader()->setSectionResizeMode(1, QHeaderView::ResizeToContents); voltageTable->horizontalHeader()->setSectionResizeMode(2, QHeaderView::ResizeToContents); voltageTable->setStyleSheet( "QTableWidget {" " background-color: #F6F6F2;" " border: 1px solid #ccc;" " color: #388087;" "}" "QTableWidget::item {" " padding: 2px;" " border: none;" " background-color: #F6F6F2;" " color: #388087;" "}" "QTableWidget::item:selected {" " background-color: #F6F6F2;" " color: #388087;" "}" "QHeaderView {" " background-color: #F6F6F2;" //表头整体背景色 "}" "QScrollBar:vertical {" " background: #F6F6F2;" " width: 12px;" " margin: 0px 0px 0px 0px;" "}" "QHeaderView::section {" " background-color: #F6F6F2;" " padding: 4px;" " border: 1px solid #ccc;" " color: #388087;" "}" "QTableCornerButton::section {" " background-color: #F6F6F2;" //左上角空白区域 " border: 1px solid #ccc;" "}" ); voltageTable->setVisible(false); //初始隐藏表格 QPixmap pixmap(":/image/333.svg"); if(!pixmap.isNull()) { machineStatusImage->setMaximumSize(450, 700); QPixmap scaled = pixmap.scaled(this->size(), Qt::KeepAspectRatio, Qt::SmoothTransformation); machineStatusImage->setPixmap(scaled); } else { machineStatusImage->setText("图片加载失败"); } statusLayout->addWidget(machineStatusImage, 3); statusLayout->addWidget(voltageTable, 1); centerLayout->addWidget(statusGroup, 3); //信息显示区域 QGroupBox *messageGroup = new QGroupBox(); messageGroup->setStyleSheet("background-color:#F6F6F2;color:#388087;border: 1px solid #ccc;padding: 5px;font-weight: bold; "); QVBoxLayout *messageLayout = new QVBoxLayout(messageGroup); //添加顶部布局,包含标题和清除按钮 QHBoxLayout *messageHeaderLayout = new QHBoxLayout(); QLabel *messageTitleLabel = new QLabel("信息显示"); messageTitleLabel->setStyleSheet("background-color:#F6F6F2;color:#388087;font-weight: bold;"); QPushButton *clearButton = new QPushButton("清空"); clearButton->setStyleSheet("QPushButton {" "background-color: #f0f0f0;" "border: 1px solid #ccc;" "border-radius: 3px;" "padding: 3px 8px;" "color:#388087;" "font-weight: bold;" "}" "QPushButton:hover {" "background-color: #e0e0e0;" "}" "QPushButton:pressed {" "background-color: #a0a0a0;" "}"); clearButton->setFixedWidth(60); //设置固定宽度 messageHeaderLayout->addWidget(messageTitleLabel); messageHeaderLayout->addStretch(); messageHeaderLayout->addWidget(clearButton); messageLayout->addLayout(messageHeaderLayout); messageTextEdit = new QTextEdit(); messageTextEdit->setReadOnly(true); messageTextEdit->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); messageTextEdit->setStyleSheet("QTextEdit { background-color: #F6F6F2; border: 1px solid #ccc; padding: 5px; color:black;font-weight: bold;/* font-family:宋体; */font-size:14px;}"); messageLayout->addWidget(messageTextEdit); //连接清除按钮的信号 connect(clearButton, &QPushButton::clicked, this, [this](){ messageTextEdit->clear(); }); centerLayout->addWidget(messageGroup, 2); mainLayout->addWidget(centerWidget, 2); 这个信息显示的groupbox无法在窗口放大缩小的时候跟随放大缩小是怎么回事
最新发布
07-16
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值