一、QTableView表头设置样式
- //控件样式
- QString setcolor="QHeaderView{"
- "border:0px solid #ffffff;"
- "outline:0px;"
- "background:#000000;"
- "}"
- "QHeaderView::section:horizontal:first{"
- "border:1px solid #ffffff;"
- "background:#000000;"
- "margin:0px;"
- "}"
- "QHeaderView::section:horizontal:middle{"
- "border:1px solid #ffffff;"
- "background:#000000;"
- "margin:0px;"
- "}"
- "QHeaderView::section:horizontal:last{"
- "border:1px solid #ffffff;"
- "background:#000000;"
- "margin:0px;"
- "}";
- ui->tableView->horizontalHeader()->setStyleSheet(setcolor);
设置表格内容居中对齐,重写QStyledItemDelegate类
- class CenterAlignedDelegate : public QStyledItemDelegate
- {
- public:
- CenterAlignedDelegate(QObject *parent = nullptr) : QStyledItemDelegate(parent) {}
-
- void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const override
- {
- QStyleOptionViewItem opt = option;
- initStyleOption(&opt, index);
-
- opt.displayAlignment = Qt::AlignCenter; // 设置对齐方式为居中
-
- QApplication::style()->drawControl(QStyle::CE_ItemViewItem, &opt, painter);
- }
- };
调用重写的类
- // 设置内容居中显示
- CenterAlignedDelegate *delegate = new CenterAlignedDelegate(this);
- ui->tableView->setItemDelegate(delegate);
二、使用QTableWidget控件,先清除在重新创建控件,设置内容水平垂直对齐,内容不可编辑,合并单元格。
- //先将ui->stackedWidget_openFile中的内容清空
- while(ui->stackedWidget_4->count() > 0)
- {
- QWidget *lastPage = ui->stackedWidget_4->widget(ui->stackedWidget_4->count() - 1);
- ui->stackedWidget_4->removeWidget(lastPage);
- lastPage->deleteLater(); // 释放内存
- }
-
- QTableWidget *tableWidget=new QTableWidget();
- ui->stackedWidget_4->addWidget(tableWidget);
-
- // 隐藏行表头
- tableWidget->verticalHeader()->setVisible(false);
- // 隐藏列表头
- tableWidget->horizontalHeader()->setVisible(false);
- tableWidget->setRowCount(9);
- tableWidget->setColumnCount(7);
- tableWidget->setSpan(0, 0, 1, 3); // 第一行的第一列跨越三列
- tableWidget->setSpan(0, 1, 1, 2); // 第一行的第二列和第三列合并为一列
- tableWidget->setSpan(0, 3, 1, 2); // 第一行的第四列和第五列为一列
- tableWidget->setSpan(0, 5, 1, 2); // 第一行的第四列和第五列为一列
- // 设置样式
- QString styleSheet = "QTableWidget {"
- " background-color: black;"
- " color: white;"
- " gridline-color: white;"
- " font-size: 13pt;" // 设置字体大小为 13 磅
- " font-family: 黑体;" // 设置字体为宋体
- "}";
- tableWidget->setStyleSheet(styleSheet);
- tableWidget->setItem(0, 0, new QTableWidgetItem("参数")); // 设置第一行第二列的内容
- tableWidget->setItem(0, 3, new QTableWidgetItem("信息")); // 设置第一行第四列的内容
- tableWidget->setItem(0, 5, new QTableWidgetItem("数量")); // 设置第一行第六列的内容
-
- // 将第一行第一列的内容居中对齐
- tableWidget->item(0, 0)->setTextAlignment(Qt::AlignCenter);
-
- // 将第一行第四列的内容居中对齐
- tableWidget->item(0, 3)->setTextAlignment(Qt::AlignCenter);
-
- // 将第一行第六列的内容居中对齐
- tableWidget->item(0, 5)->setTextAlignment(Qt::AlignCenter);
-
- tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);
- tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
- tableWidget->verticalHeader()->setSectionResizeMode(QHeaderView::Stretch);