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

Qt实现表格内进度条展示数据

    博客分类:
  • Qt
阅读更多

 

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表格分页打印

    在Qt框架中,实现表格数据的分页打印是一项常见的任务,尤其在开发桌面应用程序时,用户可能需要将大量数据从GUI界面导出到纸质媒介。Qt提供了强大的打印功能,允许开发者利用QPrinter、QPrintPreviewDialog等类实现...

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

    在Qt框架中,QTableView是用于显示表格数据的控件,它允许用户浏览和编辑二维数据。当默认的行和列展示方式不足以满足特定需求时,我们可以通过自定义委托(QStyledItemDelegate)来扩展其功能。这个自定义委托的...

    Qt之模型/视图(实时更新数据)

    在"Qt之模型/视图(实时更新数据)"这个项目中,主要展示了如何在Qt中应用模型/视图架构来实现实时更新的数据展示。以下是该项目的关键知识点: 1. **模型(Model)**:模型是数据的容器,它负责存储和管理数据。在...

    QT5.14入门教程GUI(六)第6个QT程序-滑动条进度条-卷滚条-QSlider_QScrollBar.7z

    在“QT5.14入门教程GUI(六)第6个QT程序-滑动条进度条-卷滚条-QSlider_QScrollBar”这个教程中,你将学习到如何在实际项目中创建和使用这两个控件,包括它们的事件处理、样式定制以及与其他组件的协同工作。...

    代理案例,使用代理实现在table中加入进度条

    在Qt编程中,Delegate(代理)是一个非常重要的概念,它允许我们自定义控件的显示方式,例如在表格(QTableView、QTableWidget)中实现更复杂的数据展示,如本案例中的进度条。代理机制使得我们可以对每个单元格进行...

    QT 自定义混合控件——基于View/Model/Delegate的QTableView/QTreewidget/Combobox实现

    在本项目"QT自定义混合控件——基于View/Model/Delegate的QTableView/QTreewidget/Combobox实现"中,我们将深入探讨如何利用QT库中的核心组件构建一个强大的数据展示和交互界面。 首先,我们要理解View/Model/...

    tablewidget筛选

    在Qt框架中,TableWidget是一种常用的控件,用于展示二维表格数据。本工程文件提供了在Windows环境下,基于Qt4开发的实现数据记录筛选功能的方法。本文将深入解析如何利用TableWidget进行数据筛选,并确保筛选后上下...

    用qt利用tablewidget等控件

    在Qt框架中,`QTableWidget`是用于创建表格视图的一个重要组件,它属于`QWidget`类的子类,提供了丰富的功能来显示和编辑二维数据。本篇将深入探讨如何利用Qt中的`QTableWidget`以及其他相关控件来构建用户界面。 ...

    QT tablewidget样式与添加按钮进度条选择框.7z

    QT TableWidget是Qt库中的一个核心组件,常用于在GUI应用程序中展示表格数据。这个压缩包文件"QT tablewidget样式与添加按钮进度条选择框.7z"显然包含了一些示例,展示了如何自定义TableWidget的样式,以及如何在...

    Vue3 Element Plus表格导入导出示例

    在Vue3框架中,Element Plus库提供了一套强大的表格组件,可以满足开发中常见的数据展示、操作需求。本文将深入探讨如何在Vue3项目中利用Element Plus实现表格的导入和导出功能,包括数据的CSV格式导入和导出,以及...

    基于Qt和VTK实现CT三维重建项目c++源码+项目说明.zip

    基于Qt和VTK实现CT三维重建项目c++源码+项目说明.zip 该项目是个人毕设项目,答辩评审分达到95分,代码都经过调试测试,确保可以运行!欢迎下载使用,可用于小白学习、进阶。 该资源主要针对计算机、通信、人工智能...

    QT开发的本地升级工具,实现更新数据库,更新表,更新数据,更新配置文件xml,更新DLL文件

    QT开发的本地升级工具是一种基于QT框架的软件更新解决方案,其主要目的是确保应用程序能够便捷、安全地进行数据库、表格、数据、XML配置文件以及DLL动态链接库的更新。QT是Qt Company开发的一种跨平台的应用程序开发...

    qt工业级控件

    QT支持QGraphicsView和QChart等组件,可以创建线图、柱状图、饼图等多种图表类型,用于展示大量数据并进行分析。QChart库提供了丰富的图表样式和定制选项,允许开发者创建出专业级别的数据可视化界面。 此外,QT...

    Qt实现的叫号系统,模拟银行、医院的取号叫号系统.zip

    开发者可以通过QSqlDatabase类来建立和管理数据库连接,使用QSqlQuery类执行SQL查询,或者利用QSqlTableModel将数据直接绑定到Qt的表格视图组件,实现数据的动态展示。 系统设计可能包含以下几个关键部分: 1. ...

    QT4 Qtablewidget导入、导出Excel

    总之,QT4的QTableWidget结合合适的库,可以方便地实现与Excel的数据交换,这对于需要处理大量表格数据的桌面应用来说是非常实用的功能。理解和掌握这些技巧,能够帮助开发者提高工作效率,提升用户界面的交互体验。

Global site tag (gtag.js) - Google Analytics