QT中表格控件使用

一、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);

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值