Qt 中用代理处理Model中的数据展示形式。
The QAbstractItemDelegate class is used to
display and edit data items from a model.
A QAbstractItemDelegate provides the
interface and common functionality for delegates in the model/view
architecture. Delegates display individual items in views, and handle the
editing of model data.
The QAbstractItemDelegate class is one of
the Model/View Classes and is part of Qt's model/view framework.
To render an item in a custom way, you
must implement paint() and sizeHint(). The QItemDelegate class provides default
implementations for these functions; if you do not need custom rendering,
subclass that class instead.
We give an example of drawing a progress
bar in items; in our case for a package management program.
We create the WidgetDelegate class, which inherits from QStyledItemDelegate. We do the drawing in the paint() function:
void
WidgetDelegate::paint(QPainter *painter, const QStyleOptionViewItem
&option,
const QModelIndex
&index) const
{
if
(index.column() == 1) {
int progress = index.data().toInt();
QStyleOptionProgressBar progressBarOption;
progressBarOption.rect = option.rect;
progressBarOption.minimum = 0;
progressBarOption.maximum = 100;
progressBarOption.progress = progress;
progressBarOption.text = QString::number(progress) + "%";
progressBarOption.textVisible = true;
QApplication::style()->drawControl(QStyle::CE_ProgressBar,
&progressBarOption, painter);
}
else
QStyledItemDelegate::paint(painter, option, index);
Notice that we use a QStyleOptionProgressBar and initialize its members. We can
then use the current QStyle to draw it.
To provide custom editing, there are two
approaches that can be used. The first approach is to create an editor widget
and display it directly on top of the item. To do this you must reimplementcreateEditor() to provide an editor widget, setEditorData() to populate the editor with the data
from the model, and setModelData() so that the delegate can update the
model with data from the editor.
The second approach is to handle user
events directly by reimplementing editorEvent().
分享到:
相关推荐
在Qt框架中,实现表格数据的分页打印是一项常见的任务,尤其在开发桌面应用程序时,用户可能需要将大量数据从GUI界面导出到纸质媒介。Qt提供了强大的打印功能,允许开发者利用QPrinter、QPrintPreviewDialog等类实现...
在Qt框架中,QTableView是用于显示表格数据的控件,它允许用户浏览和编辑二维数据。当默认的行和列展示方式不足以满足特定需求时,我们可以通过自定义委托(QStyledItemDelegate)来扩展其功能。这个自定义委托的...
在"Qt之模型/视图(实时更新数据)"这个项目中,主要展示了如何在Qt中应用模型/视图架构来实现实时更新的数据展示。以下是该项目的关键知识点: 1. **模型(Model)**:模型是数据的容器,它负责存储和管理数据。在...
在“QT5.14入门教程GUI(六)第6个QT程序-滑动条进度条-卷滚条-QSlider_QScrollBar”这个教程中,你将学习到如何在实际项目中创建和使用这两个控件,包括它们的事件处理、样式定制以及与其他组件的协同工作。...
在Qt编程中,Delegate(代理)是一个非常重要的概念,它允许我们自定义控件的显示方式,例如在表格(QTableView、QTableWidget)中实现更复杂的数据展示,如本案例中的进度条。代理机制使得我们可以对每个单元格进行...
在本项目"QT自定义混合控件——基于View/Model/Delegate的QTableView/QTreewidget/Combobox实现"中,我们将深入探讨如何利用QT库中的核心组件构建一个强大的数据展示和交互界面。 首先,我们要理解View/Model/...
在Qt框架中,TableWidget是一种常用的控件,用于展示二维表格数据。本工程文件提供了在Windows环境下,基于Qt4开发的实现数据记录筛选功能的方法。本文将深入解析如何利用TableWidget进行数据筛选,并确保筛选后上下...
在Qt框架中,`QTableWidget`是用于创建表格视图的一个重要组件,它属于`QWidget`类的子类,提供了丰富的功能来显示和编辑二维数据。本篇将深入探讨如何利用Qt中的`QTableWidget`以及其他相关控件来构建用户界面。 ...
QT TableWidget是Qt库中的一个核心组件,常用于在GUI应用程序中展示表格数据。这个压缩包文件"QT tablewidget样式与添加按钮进度条选择框.7z"显然包含了一些示例,展示了如何自定义TableWidget的样式,以及如何在...
在Vue3框架中,Element Plus库提供了一套强大的表格组件,可以满足开发中常见的数据展示、操作需求。本文将深入探讨如何在Vue3项目中利用Element Plus实现表格的导入和导出功能,包括数据的CSV格式导入和导出,以及...
基于Qt和VTK实现CT三维重建项目c++源码+项目说明.zip 该项目是个人毕设项目,答辩评审分达到95分,代码都经过调试测试,确保可以运行!欢迎下载使用,可用于小白学习、进阶。 该资源主要针对计算机、通信、人工智能...
QT开发的本地升级工具是一种基于QT框架的软件更新解决方案,其主要目的是确保应用程序能够便捷、安全地进行数据库、表格、数据、XML配置文件以及DLL动态链接库的更新。QT是Qt Company开发的一种跨平台的应用程序开发...
QT支持QGraphicsView和QChart等组件,可以创建线图、柱状图、饼图等多种图表类型,用于展示大量数据并进行分析。QChart库提供了丰富的图表样式和定制选项,允许开发者创建出专业级别的数据可视化界面。 此外,QT...
开发者可以通过QSqlDatabase类来建立和管理数据库连接,使用QSqlQuery类执行SQL查询,或者利用QSqlTableModel将数据直接绑定到Qt的表格视图组件,实现数据的动态展示。 系统设计可能包含以下几个关键部分: 1. ...
总之,QT4的QTableWidget结合合适的库,可以方便地实现与Excel的数据交换,这对于需要处理大量表格数据的桌面应用来说是非常实用的功能。理解和掌握这些技巧,能够帮助开发者提高工作效率,提升用户界面的交互体验。