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

【Qt】QTableView中嵌入复选框CheckBox 的四种方法总结

    博客分类:
  • Qt
阅读更多

 

搜索了一下,QTableView中嵌入复选框CheckBox方法有四种

 

 

        第一种不能之前显示,必须双击/选中后才能显示,不适用。

        第二种比较简单,通常用这种方法。

        第三种只适合静态显示静态数据用

        第四种比较适合扩展,它除了可以嵌入复选框,还可以通过paint()绘制其它控件,图片等自定义风格。


第一种方法是:编辑委托法

这种方法直接利用委托中重载createEditor(),激活QCheckBox,这个缺点是必须双击/选中,才能显示CheckBox控件。一般不满足我们实际中的直接显示的需要。可以参考Qt中的QSpinBoxDelegate例子。

 

第二种方法是:设置QAbstractTableModel的flags()函数法。

 

第三种方法是:用QTableView中的方法void setIndexWidget(const QModelIndex &index, QWidget *widget)来设置QCheckBox。

 

代码:setIndexWidget(index, new QTextEdit);

 Qt Assistant 写道
The items shown in a table view, like those in the other item views, are rendered and edited using standard delegates. However, for some tasks it is sometimes useful to be able to insert widgets in a table instead. Widgets are set for particular indexes with the setIndexWidget() function, and later retrieved with indexWidget().
 

    Qt Assistant 写道关于setIndexWidget()

Sets the given widget on the item at the given index, passing the ownership of the widget to the viewport.
If index is invalid (e.g., if you pass the root index), this function will do nothing.
The given widget's autoFillBackground property must be set to true, otherwise the widget's background will be transparent, showing both the model data and the item at the given index.
If index widget A is replaced with index widget B, index widget A will be deleted. For example, in the code snippet below, the QLineEdit object will be deleted.
setIndexWidget(index, new QLineEdit);
...
setIndexWidget(index, new QTextEdit);
This function should only be used to display static content within the visible area corresponding to an item of data. If you want to display custom dynamic content or implement a custom editor widget, subclass QItemDelegate instead.

 

此功能只应该用来显示可视区域内对应一个数据项的静态内容。如果你想显示自定义的动态内容或执行自定义编辑器部件,子类化QItemDelegate代替。

就是说这个只适合用来做不变数据的显示,而不适合做一些会产生插入,更新,删除这样的操作的数据显示.

 

 

第四种方法是:实现QAbstractItemDelegate的paint()函数。

分享到:
评论

相关推荐

    Qt之QTableView添加复选框

    本教程将深入探讨如何在QTableView中添加复选框,特别是在表头和第一列中实现这一功能,以增强用户界面的交互性。 首先,我们要明白QTableView的工作原理。它是基于QAbstractItemView类的,通过QStandardItemModel...

    QTableView插入QCheckBox复选框

    本篇将详细介绍如何在QTableView中插入QCheckBox复选框,以及如何实现表头复选框与其他行复选框的关联。 首先,我们需要创建一个自定义的数据模型(QAbstractTableModel或QStandardItemModel)来替代默认的模型。这...

    qt,QTableView实现复选框,分页功能

    本教程将详细讲解如何在QTableView中实现复选框、分页和查询功能,并涉及与MySQL数据库的交互。 首先,让我们关注在QTableView中添加复选框的功能。这通常通过自定义视图Delegate来实现。你需要创建一个继承自...

    QT-qtableview表头添加复选框QHeaderView

    在 Qt 框架中,要在 QTableView 的表头中添加复选框,可以通过继承 QHeaderView 并重写 paintSection 方法来实现。 介绍一种继承 QHeaderView的方法实现QTableView 中添加复选框,可全选/全不选/部分选。

    QTableView添加复选框,下拉框控件

    总结来说,QTableView添加复选框和下拉框控件主要涉及Qt的自定义委托、Model/View架构、信号与槽机制,以及可能的后端服务接口。在C#环境下,需要考虑跨语言调用和绑定问题。通过这样的定制,我们可以为用户提供更...

    QTableView显示自定义CheckBox

    而有时候,我们可能需要在表格的某一列中显示可选的复选框(CheckBox),以供用户进行选择操作。本篇文章将深入讲解如何在`QTableView`中实现自定义的CheckBox显示,并基于`macOS 10.13.1`和`Qt 5.9.1`的开发环境...

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

    本篇文章将详细探讨如何在`QTableWidget`或`QTableView`的表头中添加复选框,并实现全选/全不选的功能。 首先,我们需要了解`QTableWidgetItem`和`QHeaderView`。`QTableWidgetItem`是`QTableWidget`中的基本元素,...

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

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

    QT QTableView用法总结

    QT QTableView是QT框架中的一种视图控件,用于显示表格数据。下面我们将详细介绍QT QTableView的用法,包括设置表头、设置表格属性、动态添加行等。 一、设置表头 在使用QT QTableView之前,我们需要首先设置表头...

    qt qtableview在表头中添加combobox,checkbox,spinbox

    本主题聚焦于如何在QTableView的表头(QHeaderView)中添加更丰富的交互元素,如Combobox(下拉框)、Checkbox(复选框)和Spinbox(数值旋钮)。这通常是为了增强用户界面的交互性和功能多样性。 首先,我们需要...

    qtableview 自定义委托 checkbox,进度条、时间等控件

    1. **复选框(Checkbox)**:在QTableView中添加复选框,可以方便地对表格中的每一项进行选中或取消选中操作。要实现这一点,我们需要创建一个继承自QStyledItemDelegate的类,然后在`paint()`方法中绘制复选框,并...

    QTableWidget表头添加复选框实现全选功能

    有时候,我们希望在表格的表头中添加复选框,以便实现全选或取消全选的功能,这在处理大量数据时尤其有用。本篇文章将详细解释如何在`QTableWidget`的表头中添加复选框并实现全选功能。 首先,我们需要了解`...

    QT下Mingw实现QTtableview中实现添加复选框、按钮控件实例

    - 在`paint()`方法中,使用QPainter绘制复选框。使用QStyle和QStyleOptionButton来绘制标准的Windows或GTK风格的复选框。 - 在`createEditor()`方法中,当单元格被编辑时,返回一个QCheckBox实例,并设置其状态。 ...

    QT的QTreeWidget有checkbox时轻松选中

    在QTreeWidget中添加复选框(checkbox)功能,可以让用户选择或取消选择特定的项,这对于多选操作或者配置界面非常有用。在实际开发中,我们可能会遇到一个问题:当用户点击QTreeWidget中的某一行,但不是直接点击复...

    qt qtableview动态代理

    在Qt框架中,QTableView是用于显示表格数据的控件,通常与QAbstractItemModel或QStandardItemModel一起使用。然而,QTableView的功能可以进一步增强,通过实现动态代理(Dynamic Proxy)来扩展其交互性。动态代理...

    Qt中将QTableView中的数据导出为Excel文件实例QT4

    原文为《Qt中将QTableView中的数据导出为Excel文件>>,地址http://blog.csdn.net/superjoel/article/details/5321404。代码为QT4,QT5有些问题,因为只是参考里面的代码,就不是很在意。

    QTableView复选框源码

    `QTableView`复选框的功能可以让用户方便地对表格中的每一行进行选择,支持未选中、部分选中和全选三种状态。这些状态对于数据操作和用户交互至关重要,比如在数据过滤、批量操作或状态指示等场景。 在这个项目中,...

    QTableView 标题换行显示和富文本显示 qt5.8

    标签提到了`qt delegate`,这是Qt中的一种机制,允许我们自定义视图(如`QTableView`)中的每一项的显示和编辑行为。通过设置`setItemDelegate`,我们可以为特定的列或整个表格指定自定义的代理,从而实现定制的数据...

    Qt编程-QTableView同时冻结行和列

    以下我们将详细探讨如何在Qt中实现QTableView同时冻结行和列的功能。 首先,我们需要理解QTableView的工作原理。QTableView是基于QAbstractItemView构建的,它通过模型-视图-代理(Model-View-Proxy)架构来显示...

    QT在QTableView的一列里添加两个按钮

    QTableView是QT中的一个关键组件,它用于展示表格数据,通常与QAbstractItemModel或QSqlTableModel等模型类配合使用。在QTableView中添加自定义元素,如按钮,可以实现更丰富的用户交互。 在QT中,要在QTableView的...

Global site tag (gtag.js) - Google Analytics