• QT中表格控件使用


    一、QTableView表头设置样式

    1. //控件样式
    2. QString setcolor="QHeaderView{"
    3. "border:0px solid #ffffff;"
    4. "outline:0px;"
    5. "background:#000000;"
    6. "}"
    7. "QHeaderView::section:horizontal:first{"
    8. "border:1px solid #ffffff;"
    9. "background:#000000;"
    10. "margin:0px;"
    11. "}"
    12. "QHeaderView::section:horizontal:middle{"
    13. "border:1px solid #ffffff;"
    14. "background:#000000;"
    15. "margin:0px;"
    16. "}"
    17. "QHeaderView::section:horizontal:last{"
    18. "border:1px solid #ffffff;"
    19. "background:#000000;"
    20. "margin:0px;"
    21. "}";
    22. ui->tableView->horizontalHeader()->setStyleSheet(setcolor);

    设置表格内容居中对齐,重写QStyledItemDelegate类

    1. class CenterAlignedDelegate : public QStyledItemDelegate
    2. {
    3. public:
    4. CenterAlignedDelegate(QObject *parent = nullptr) : QStyledItemDelegate(parent) {}
    5. void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const override
    6. {
    7. QStyleOptionViewItem opt = option;
    8. initStyleOption(&opt, index);
    9. opt.displayAlignment = Qt::AlignCenter; // 设置对齐方式为居中
    10. QApplication::style()->drawControl(QStyle::CE_ItemViewItem, &opt, painter);
    11. }
    12. };
    调用重写的类
    1. // 设置内容居中显示
    2. CenterAlignedDelegate *delegate = new CenterAlignedDelegate(this);
    3. ui->tableView->setItemDelegate(delegate);

    二、使用QTableWidget控件,先清除在重新创建控件,设置内容水平垂直对齐,内容不可编辑,合并单元格。

    1. //先将ui->stackedWidget_openFile中的内容清空
    2. while(ui->stackedWidget_4->count() > 0)
    3. {
    4. QWidget *lastPage = ui->stackedWidget_4->widget(ui->stackedWidget_4->count() - 1);
    5. ui->stackedWidget_4->removeWidget(lastPage);
    6. lastPage->deleteLater(); // 释放内存
    7. }
    8. QTableWidget *tableWidget=new QTableWidget();
    9. ui->stackedWidget_4->addWidget(tableWidget);
    10. // 隐藏行表头
    11. tableWidget->verticalHeader()->setVisible(false);
    12. // 隐藏列表头
    13. tableWidget->horizontalHeader()->setVisible(false);
    14. tableWidget->setRowCount(9);
    15. tableWidget->setColumnCount(7);
    16. tableWidget->setSpan(0, 0, 1, 3); // 第一行的第一列跨越三列
    17. tableWidget->setSpan(0, 1, 1, 2); // 第一行的第二列和第三列合并为一列
    18. tableWidget->setSpan(0, 3, 1, 2); // 第一行的第四列和第五列为一列
    19. tableWidget->setSpan(0, 5, 1, 2); // 第一行的第四列和第五列为一列
    20. // 设置样式
    21. QString styleSheet = "QTableWidget {"
    22. " background-color: black;"
    23. " color: white;"
    24. " gridline-color: white;"
    25. " font-size: 13pt;" // 设置字体大小为 13
    26. " font-family: 黑体;" // 设置字体为宋体
    27. "}";
    28. tableWidget->setStyleSheet(styleSheet);
    29. tableWidget->setItem(0, 0, new QTableWidgetItem("参数")); // 设置第一行第二列的内容
    30. tableWidget->setItem(0, 3, new QTableWidgetItem("信息")); // 设置第一行第四列的内容
    31. tableWidget->setItem(0, 5, new QTableWidgetItem("数量")); // 设置第一行第六列的内容
    32. // 将第一行第一列的内容居中对齐
    33. tableWidget->item(0, 0)->setTextAlignment(Qt::AlignCenter);
    34. // 将第一行第四列的内容居中对齐
    35. tableWidget->item(0, 3)->setTextAlignment(Qt::AlignCenter);
    36. // 将第一行第六列的内容居中对齐
    37. tableWidget->item(0, 5)->setTextAlignment(Qt::AlignCenter);
    38. tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);
    39. tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
    40. tableWidget->verticalHeader()->setSectionResizeMode(QHeaderView::Stretch);

  • 相关阅读:
    shell基础(2):编程基础之变量:全局/局部/shell变量(作用域、定义、操作)、位置参数、数组
    软件测试|Python Faker库使用指南
    云原生:10分钟了解一下Kubernetes架构
    计算机中的进制转换
    Flink 中的时间和窗口(一)
    强烈推荐一款好用的API接口
    【效率提升】maven 转 gradle 实战 | 京东云技术团队
    2022年竞赛打榜,神经网络还是干不过树模型??
    【python】numpy创建特殊数组
    Kotlin协程Flow浅析
  • 原文地址:https://blog.csdn.net/m0_64886406/article/details/137999643