`
qimo601
  • 浏览: 3443995 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

QTableWidget与QTableView的区别

    博客分类:
  • Qt
阅读更多

 

QTableWidget继承自QTableView。QSqlTableModel能与QTableView绑定,但不能于QTableWidget绑定。

 

 

QSqlTableModel *model = new QSqlTableModel;
model->setTable("employee");
model->setEditStrategy(QSqlTableModel::OnManualSubmit);
model->select();
model->removeColumn(0); // don't show the ID
model->setHeaderData(0, Qt::Horizontal, tr("Name"));
model->setHeaderData(1, Qt::Horizontal, tr("Salary"));

QTableView *view = new QTableView;
view->setModel(model);
view->show();
 

       QTableWidget是QT程序中常用的显示数据表格的空间,很类似于VC、C#中的DataGrid。说到QTableWidget,就必须讲一下它跟QTabelView的区别了。

      QTableWidget是QTableView的子类,主要的区别是QTableView可以使用自定义的数据模型来显示内容(也就是先要通过setModel来绑定数据源),而QTableWidget则只能使用标准的数据模型,并且其单元格数据是QTableWidgetItem的对象来实现的(也就是不需要数据源,将逐个单元格内的信息填好即可)。这主要体现在QTableView类中有setModel成员函数,而到了QTableWidget类中,该成员函数变成了私有。使用QTableWidget就离不开QTableWidgetItem。QTableWidgetItem用来表示表格中的一个单元格,正个表格都需要用逐个单元格构建起来。

 

                                                     具体区别表格

 

区别点

QTableView

QTableWidget

继承关系

 

QTableWidget继承自QTableView

使用数据模型setModel

可以使用setModel设置数据模型

setModel是私有函数,不难使用该函数设置数据模型

显示复选框setCheckState

没有函数实现复选框

QTableWidgetItem类中的setCheckState(Qt::Checked);可以设置复选框

QSqlTableModel绑定

QTableView能与QSqlTableModel绑定

QtableWidget能与QSqlTableModel绑定

     


View与Model绑定注意事项

但视图与模型绑定时,模型必须使用new来创建。否则视图不能随着模型的改变而改变。

Eorror错误的写法

 

QStandardItemModel model(4,2);


model.setHeaderData(0, Qt::Horizontal, tr("Label"));
model.setHeaderData(1, Qt::Horizontal, tr("Quantity"));


ui.tableView->setModel(&model);

for (int row = 0; row < 4; ++row) {
    for (int column = 0; column < 2; ++column) {
        QModelIndex index = model.index(row, column, QModelIndex());
        model.setData(index, QVariant((row+1) * (column+1)));
    }
}
 
 

Right 正确的写法

 

QStandardItemModel *model;

model = new QStandardItemModel(4,2);
ui.tableView->setModel(model);

model->setHeaderData(0, Qt::Horizontal, tr("Label"));
model->setHeaderData(1, Qt::Horizontal, tr("Quantity"));

for (int row = 0; row < 4; ++row) {
    for (int column = 0; column < 2; ++column) {
        QModelIndex index = model->index(row, column, QModelIndex());
        model->setData(index, QVariant((row+1) * (column+1)));
    }
}
 
 

 

分享到:
评论

相关推荐

    QTableWidget,QTableView分页的分页栏

    首先,我们需要理解`QTableWidget`和`QTableView`的区别。`QTableWidget`是基于`QWidget`的,它提供了完整的表格功能,包括数据编辑、行/列添加删除等,操作起来较为直观但性能较低。而`QTableView`是基于`...

    QTableWidget,QTableView分页的分页栏使用demo

    在Qt库中,QTableWidget和QTableView是用于创建和展示表格数据的两种重要组件。在处理大量数据时,为了提高用户体验,我们通常会引入分页功能,以便用户可以逐页浏览,而不是一次性加载所有数据。本文将深入探讨如何...

    Qtablewidget和Qtableview实现手指滑动

    用在嵌入式QT或者安卓QT,判断手指滑动方向,来实现手指滑动浏览,并显示自定义滑动条,滑动条可以支持上色,包含两个QtableWidget和QtableView示例,都可以用,文章链接:https://www.cnblogs.com/lifexy/p/14111572.html

    QTableWidget,QTableView 打印demo

    在Qt库中,`QTableWidget`和`QTableView`是两种用于显示表格数据的控件,它们在处理和展示二维数据集时非常有用。在实际应用中,有时我们需要将这些表格的内容打印出来,以便于分析或记录。本文将详细探讨如何在Qt...

    Pyqt5 QTableWidget/QTableView 行表头添加复选框全选功能

    在PyQt5中,`QTableWidget`和`QTableView`是用于展示表格数据的两种控件。它们都提供了丰富的功能,包括自定义列、行操作以及数据交互。本篇文章将详细探讨如何在`QTableWidget`或`QTableView`的表头中添加复选框,...

    QTableWidget QTableView 自定义复杂表头(多行表头,表头合并) 、冻结、固定特定的行

    在QT编程中,`QTableWidget` 和 `QTableView` 是两种常用的用于显示表格数据的控件。它们都属于Qt的`QtWidgets`模块,但各自有着不同的特性和使用场景。今天我们将深入探讨如何实现标题中提及的几个关键功能:自定义...

    QTableWidget 应用总结

    #### 一、QTableWidget与QTableView的区别 QTableWidget作为Qt框架中的一个重要组件,主要用于展示二维表格数据,其功能类似于其他编程语言中的DataGrid控件,如VC或C#中的对应组件。QTableWidget与QTableView同属...

    QTableView/QTableWidget自定义表头,添加复选框,下拉框控件

    在Qt框架中,`QTableView`和`QTableWidget`是两种常用的用于显示二维数据的控件。在一些复杂的用户界面设计中,我们可能需要对表头进行自定义,例如添加复选框或下拉框,以提供更丰富的交互功能。在本篇中,我们将...

    QTableView QTableWidget 复杂表头(多行表头) 、冻结、固定特定的行

    QT QTableView QTableWidget 复杂表头(多行表头) 、(冻结、固定特定的行),具体效果看博客: https://blog.csdn.net/xiezhongyuan07/article/details/82857631

    QTableWidget设置表头筛选(含鼠标点击事件过滤)

    `QTableWidget`继承自`QTableView`,并提供了更丰富的接口来创建和编辑表格。在表头(header)上设置筛选功能,可以方便用户快速查找和操作特定数据。 步骤一:创建`QTableWidget` 在`main.cpp`或`widget.cpp`中,...

    QTableView更新拖拽列功能啦

    5. **同步视图与模型**:最后,由于列的顺序已经改变,需要更新视图以反映这些变化。这可以通过调用`header-&gt;resizeSections`和`header-&gt;model()-&gt;layoutChanged()`来实现。 ```cpp header-&gt;resizeSections...

    Qtableview的快捷键选择复制

    在处理大量数据时,特别是在数据分析领域,`QTableView`与Pandas的数据操作相结合,可以提供直观且高效的数据查看和交互方式。本文将详细介绍如何在`QTableView`中实现快捷键选择和复制功能。 首先,我们需要理解`...

    QTableWidget实现大数据分页快速显示.zip

    5. **优化性能**: 为了进一步提升性能,可以开启QTableWidget的虚拟模式(QTableView::setViewportSize()和QTableView::setRowHeight())。在虚拟模式下,QTableWidget仅绘制可视区域内的单元格,而非整个表格,从而...

    qTableWidget拖拽

    QTableWidget是QTableView和QAbstractItemView的子类,它包含了完整的数据模型、视图和编辑器。在QTableWidget中,你可以直接添加、删除和编辑单元格内容,无需自己创建数据模型。每个单元格可以关联一个数据项,行...

    Qt GUI图形图像开发之Qt表格控件QTableView简单使用方法及QTableView与QTableWidget区别

    Qt GUI图形图像开发之Qt表格控件QTableView简单使用方法及QTableView与QTableWidget区别 Qt GUI图形图像开发中,QTableView是Qt中用来把数据集以表格形式提供给用户的一个控件。QTableView类实现表格视图,...

    QTableView 插入按钮等各种控件实例

    要在`QTableView`的单元格中插入按钮,我们需要自定义`QTableWidgetItem`,并覆盖其`paintEvent()`方法,绘制出按钮的外观。然后,我们可以设置按钮的信号和槽,以便在点击时触发相应的行为。 2. **复选框集成**:...

    QTableView 切换折叠展开图标

    在IT行业中,`QTableView`是Qt库中的一个关键组件,用于展示表格数据。它提供了灵活的视图来显示和操作二维数据模型。本篇我们将深入探讨如何在`QTableView`中实现切换折叠展开图标的功能,这对于处理层级结构的数据...

    QTableView 封装,支持自动调整每一行和每一列的大小,只需要传入宽高和头就可以

    这可能涉及到设置行内元素(如QTableWidgetItem)的字体、字号等因素,以适应不同内容的行高。 3. **用户交互性**:尽管自动调整大小可以提高用户体验,但用户可能还需要手动调整。封装可能保留了原有的鼠标拖动...

    qt QTablewidget自绘

    当`QTableView`被放置在`QTableWidget`之上时,可以用来实现某些复杂交互,比如创建一个覆盖在`QTableWidget`上的下拉视图。这种技术通常用于模拟标准控件无法直接提供的行为,比如自定义下拉列表或者复杂的单元格...

    QTableWidget 实现鼠标划过时,整行背景颜色及字体边框的变化

    在Qt库中,QTableWidget是一个非常常用的控件,用于展示二维数据,它提供了丰富的功能,包括编辑、排序和选择等。在这个特定的场景中,我们关注的是如何在用户鼠标划过某一行时,实现该行背景颜色以及字体边框的变化...

Global site tag (gtag.js) - Google Analytics