自学内容网 自学内容网

qt QTableView详解

1、概述

QTableView 是 Qt 框架中的一个高级视图类,用于以表格形式展示二维数据。它基于 QAbstractItemView,并与模型(通常是 QAbstractTableModel 或 QStandardItemModel)结合使用,以实现数据的展示和交互。QTableView 提供了灵活的列宽调整、行高设置、单元格编辑以及数据排序和筛选等功能。它支持多种选择模式,如单选、多选和扩展选择,以及通过委托(delegates)来自定义单元格的渲染和编辑行为。

2、重要方法

QTableView 提供了丰富的 API 来管理和展示数据,以下是一些重要的方法:

  • setModel:设置数据模型,将数据模型与视图关联起来。
  • selectionModel 和 setSelectionModel:获取和设置选择模型,用于管理用户的选择。
  • horizontalHeader 和 verticalHeader:获取表格的水平和垂直表头,用于自定义表头的外观和行为。
  • resizeColumnsToContents 和 resizeRowsToContents:根据内容自动调整列宽和行高。
  • setSortingEnabled:启用或禁用排序功能。
  • setEditTriggers:设置编辑触发器,决定何时可以编辑单元格。
  • setCurrentIndex 和 currentIndex:设置和获取当前选中的单元格。
  • setSpan:设置单元格的跨行和跨列数。
3、重要信号

QTableView 发射多种信号来响应用户的操作和数据的变更,以下是一些重要的信号:

  • clicked:单击某个单元格时发射此信号。
  • doubleClicked:双击某个单元格时发射此信号。
  • pressed:按下鼠标按钮时发射此信号。
  • released:释放鼠标按钮时发射此信号。
  • selectionChanged:选择发生变化时发射此信号。
  • currentChanged:当前单元格发生变化时发射此信号。
  • cellClickedcellDoubleClickedcellPressedcellReleased:这些信号提供了更细粒度的控制,允许开发者根据单元格的位置和索引来响应事件。
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent)
{
    setWindowTitle("QTableView Example");
    resize(600, 400);

    // 创建数据模型
    QStandardItemModel *model = new QStandardItemModel;
    model->setHorizontalHeaderLabels({"Name", "Age", "Occupation"});

    QList<QStandardItem *> row1;
    row1 << new QStandardItem("Alice") << new QStandardItem("30") << new QStandardItem("Engineer");
    model->appendRow(row1);

    QList<QStandardItem *> row2;
    row2 << new QStandardItem("Bob") << new QStandardItem("25") << new QStandardItem("Designer");
    model->appendRow(row2);

    QList<QStandardItem *> row3;
    row3 << new QStandardItem("Charlie") << new QStandardItem("35") << new QStandardItem("Manager");
    model->appendRow(row3);

    QList<QStandardItem *> row4;
    row4 << new QStandardItem("David") << new QStandardItem("40") << new QStandardItem("Director");
    model->appendRow(row4);

    // 创建表视图
    QTableView *tableView = new QTableView;
    tableView->setModel(model);
    tableView->resizeColumnsToContents(); // 自动调整列宽
    tableView->setSelectionMode(QAbstractItemView::SingleSelection); // 设置选择模式为单选
    tableView->setSortingEnabled(true); // 启用排序功能
    tableView->setShowGrid(true); // 显示网格线

    // 布局管理
    QVBoxLayout *layout = new QVBoxLayout;
    layout->addWidget(tableView);
    QWidget *centralWidget = new QWidget;
    centralWidget->setLayout(layout);

    setCentralWidget(centralWidget);
}

觉得有帮助的话,打赏一下呗。。

           


原文地址:https://blog.csdn.net/ckg3824278/article/details/143568885

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!