• Qt应用开发(基础篇)——表格视图 QTableView


    一、前言

            QTableView类继承QAbstractItemView类,提供了一个表格视图的模型。

            视图基类 QAbstractItemView

            QTableView默认为Model/View实现。

    1. //绑定view和model
    2. QStandardItemModel *model = new QStandardItemModel();
    3. ui->tableView->setModel(model);
    4. //view设置标题栏
    5. model->setHorizontalHeaderLabels(QStringList()<<"log");
    6. //view设置标题栏缩放策略
    7. ui->tableView->horizontalHeader()->setSectionResizeMode(0, QHeaderView::Stretch);
    8. //model插入数据
    9. for(int i = 0 ; i<10 ;i++)
    10. {
    11. int newRow = model->rowCount();//获取当前行数
    12. model->insertRow(newRow, QModelIndex());//插入一行
    13. model->setData(model->index(newRow, 0),"information");//插入数据
    14. }

            QTableView表格视图带有横向和纵向的滚动条,当水平方向的内容放不下的时候,会自动显示出来。滚动条的信息保存在QScrollBar中,使用horizontalScrollBar()verticalScrollBar()获取部件类,配合QSS样式表设置滚动条的样式信息。

    1. .QScrollBar:vertical{
    2. width:10px;
    3. background-color:#e9e9e9;
    4. padding-top:10px;
    5. padding-bottom:10px;
    6. }
    7. .QScrollBar:horizontal{
    8. height:10px;
    9. background-color:#e9e9e9;
    10. padding-left:10px;
    11. padding-right:10px;
    12. }

            QTableView表格视图带有横向顶部和纵向左侧的头信息,头信息使用QHeaderView封装,使用verticalHeader()horizontalHeader()得到它们,顶部头一般用来显示列描述,左侧头一般用来显示行序号,默认显示,也可以关闭它们。

            QTableView表格视图也提供了很多常用的公共方法,用来设置表格的样式,rowHeight()得到行高,columnWidth()得到列宽,隐藏和显示某行某列使用hideRow(), hideColumn(), showRow()showColumn()

            QTableView表格视图和其他视图一样,支持使用标准委托来呈现和编辑,这在父类QAbstractItemView已经讲过,如果只是需要在某一个单元显示小部件,比如你想要某一行显示一个下拉框,而不是全部行都需要,那么你只需要使用setIndexWidget()indexWidget()来特殊设置和获取并操作即可。

    二、QTableView

    1、属性

    1)cornerButtonEnabled

            该属性表示是否启用左上角的按钮,默认为true,单击此按钮将选择表视图中的所有单元格,当然前提是selectionMode不能设置为NoSelection。

    1. bool isCornerButtonEnabled() const
    2. void setCornerButtonEnabled(bool enable)
    2)gridStyle

            该属性表示网格线的样式。       

    1. Qt::PenStyle gridStyle() const
    2. void setGridStyle(Qt::PenStyle style)

    3)showGrid

            该属性表示是否显示网格线。

    1. bool showGrid() const
    2. void setShowGrid(bool show)
    4)sortingEnabled

            该属性表示是否启用排序,该属性默认为false。

    1. bool isSortingEnabled() const
    2. void setSortingEnabled(bool enable)
    5)wordWrap

            该属性表示列表中是否文本换行,默认为true,则项目文本在必要的换行处换行。

            这里要注意就算换行了,也不会展开单元格来为文本腾出空间。需要设置textElideMode(父类属性)来设置是否为不显示的文本显示“...”。

    1. bool wordWrap() const
    2. void setWordWrap(bool on)

    2、公共函数

    1)clearSpans

            清空全部行和列设置的跨度。

    void clearSpans()
    2)setSpan

            设置某行和列的行跨度和列跨度。

    void setSpan(int row, int column, int rowSpanCount, int columnSpanCount)
    3)columnSpan

            返回某单元的列跨度,默认为1。

    int columnSpan(int row, int column) const
    4)rowSpan

            返回某单元的行跨度,默认为1。

    int rowSpan(int row, int column) const
    5)horizontalHeader

            返回横向标题栏,封装在QHeaderView中。

    QHeaderView *horizontalHeader() const
     6)setHorizontalHeader

            设置横向标题栏,封装在QHeaderView中。

    void setHorizontalHeader(QHeaderView *header)
    7)verticalHeader

            返回纵向标题栏,封装在QHeaderView中。

    QHeaderView *verticalHeader() const
    8setVerticalHeader

            设置纵向标题栏,封装在QHeaderView中。

    void setVerticalHeader(QHeaderView *header)
    9)columnWidth

            返回给定的列的宽度。

    int columnWidth(int column) const
    10)setColumnWidth

           设置给定的列的宽度。

    void setColumnWidth(int column, int width)
    11)rowHeight

            返回给定的行的高度。

    int rowHeight(int row) const
    12)rowHeight

            设置给定的行的高度。

    void setRowHeight(int row, int height)
    13)columnViewportPosition

            返回给定列的内容坐标中的x坐标。

    int columnViewportPosition(int column) const
    14)isColumnHidden

            返回给定的列是否隐藏。

    bool isColumnHidden(int column) const
    15)setColumnHidden

           设置某行是否隐藏。

    void setColumnHidden(int column, bool hide)
    16)isRowHidden

            返回给定的行是否隐藏。

    bool isRowHidden(int row) const
    17)setRowHidden

           设置某行是否隐藏。

    void setRowHidden(int row, bool hide)
    18)rowAt

           返回给定的内容坐标中y坐标所在的行。

     int rowAt(int y) const
    19)columnAt

           返回给定的内容坐标中x坐标所在的列。

    int columnAt(int x) const
    20)setRowHeight

           设置某单元格的高度。

    void setRowHeight(int row, int height)

    3、公共槽函数

    1)hideColumn

            隐藏给定的列。

    void hideColumn(int column)
    2)hideRow

            隐藏给定的行。

    void hideRow(int row)
    3)showColumn

            显示给定的列。

    void showColumn(int column)
    4)showRow

            显示给定的行。

    void showRow(int row)
    5)resizeColumnToContents

            调整给定列的大小,根据该列中委托的sizeHint。

     void resizeColumnToContents(int column)
    6)resizeColumnsToContents

            调整全部列的大小,根据每个项中委托的sizeHint。

    void resizeColumnsToContents()
    7)resizeRowToContents

            调整给定行的大小,根据该列行中委托的sizeHint。

    void resizeRowToContents(int row)
    8)resizeRowsToContents

            调整全部行的大小,根据每个行中委托的sizeHint。

    void resizeColumnsToContents()
    9)selectColumn

            选中给定的一列。

    void selectColumn(int column)
    10)selectRow

            选中给定的一行。

    void selectRow(int row)
    11)sortByColumn

            对某一列进行排序。

    void sortByColumn(int column, Qt::SortOrder order)
    enum Qt::SortOrder描述
    Qt::AscendingOrder项目按升序排序
    Qt::DescendingOrder项目按降序排序

  • 相关阅读:
    Stable DIffusion 炫酷应用 | AI嵌入艺术字+光影光效
    双编码器构建机器人零力拖动/导纳控制思路
    【计算机网络】VRRP协议理论和配置
    Linux mdeltree命令教程:详解删除MS-DOS文件系统中的目录及其包含的所有文件和子目录的命令(附实例详解和注意事项)
    2022年最新阿里Java高级岗200+面试题,掌握80%进阿里没问题
    AQS源码解析 7.共享模式_CyclicBarrier重复屏障
    (76)MIPI DSI LLP介绍(十六)
    4个高质量站点推荐值得收藏
    在 Vue 应用中下载.doc文档(或任何其他类型的文件)
    STM32F103标准库开发---SPI实验---底层驱动程序
  • 原文地址:https://blog.csdn.net/u014491932/article/details/133782869