新的Delegate可以通过继承QStyledItemDelegate来重新实现。 为了简化功能,填充的五角星并没有可编辑的能力,而我们只需要重新实现QStyledItemDelegate类中的paint和sizeHint方法即可。 一、 StarDelegate 类 头文件如下: class StarDelegate : public QStyledItemDelegate { Q_OBJECT public: StarDelegate(QWidget *parent = 0) : QStyledItemDelegate(parent) {} void paint(QPainter *painter, ::sizeHint(option, index); } } 只有当index.data()是StarRating时我们才使用自己定义的五角星,否则使用QStyledItemDelegate来进行绘制
Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍QStyledItemDelegate 在Qt中,QStyledItemDelegate 类是用于创建自定义表格视图(如QTableView和QTableWidget)的委托类,允许你自定义表格中每个单元格的外观和交互。 QStyledItemDelegate 是QItemDelegate 的子类,提供了更现代、更易用的接口。 QAbstractItemDelegate 是 QItemDelegate 的基类,而 QItemDelegate 则是 QStyledItemDelegate 的基类。 #include "spindelegate.h"#include <QSpinBox>QWIntSpinDelegate::QWIntSpinDelegate(QObject *parent):QStyledItemDelegate
\ image: url(images/icon_reduce.png); \ } \ “); / class ListViewDelegate : public QStyledItemDelegate QStyledItemDelegate – Styling Item views It all started as a small feature request – Adding style sheet So was born QStyledItemDelegate – The default delegate for Item views starting 4.4. To let that sink in – all our views now delegate painting to QStyledItemDelegate instead of QItemDelegate QStyledItemDelegate prompty plays its part by delegating everything to QStyle The cool thing is that
先来实现一个代理,代理到Spin组件上,首先需要在项目上右键选择addnew -> C++Class 输入自定义类名称QWintSpinDelegate,然后基类继承QStyledItemDelegate #include "spindelegate.h"#include <QSpinBox>QWIntSpinDelegate::QWIntSpinDelegate(QObject *parent):QStyledItemDelegate floatspindelegate.h"#include <QDoubleSpinBox>QWFloatSpinDelegate::QWFloatSpinDelegate(QObject *parent):QStyledItemDelegate
先来实现一个代理,代理到Spin组件上,首先需要在项目上右键 选择addnew -> C++Class 输入自定义类名称QWintSpinDelegate,然后基类继承QStyledItemDelegate include "spindelegate.h" #include <QSpinBox> QWIntSpinDelegate::QWIntSpinDelegate(QObject *parent):QStyledItemDelegate floatspindelegate.h" #include <QDoubleSpinBox> QWFloatSpinDelegate::QWFloatSpinDelegate(QObject *parent):QStyledItemDelegate
(current.row()).arg(current.column()); } ---- 委托 在模型/视图框架中,QAbstractItemDelegate是委托类的抽象基类,Qt默认的委托实现由QStyledItemDelegate 类提供,这也被用作Qt标准视图的默认委托,选择 QStyledItemDelegate或QItemDelegate中其一来为视图中的项目绘制和提供编辑器。 不同的是QStyledItemDelegate使用当前的样式来绘制项目,实现自定义委托建议使用QStyledItemDelegate作为基类。
QModelIndex, QObject, Qt, ) from PyQt5.QtGui import QColor from PyQt5.QtWidgets import QStyledItemDelegate StatusWidget if sys.version_info > (3,): long = int class Painter(QObject): class ProxyItemDelegate(QStyledItemDelegate
endMoveRows(); return true;};3.2 样式定制与委托// 自定义委托示例class CustomDelegate : public QStyledItemDelegate index.data().toString()); painter->restore();else { QStyledItemDelegate
itemDelegate() ,setItemDelegate ( )成员函数来 获得/设置当前委托对象 QAbstractItemDelegate类是所有委托的父类,用来 负责提供通用接口 在模型视图中,会默认提供一个QStyledItemDelegate
可设置父节点文字的 图标边距+左侧距离+字体大小+高度 * 9:可设置子节点文字的 图标边距+左侧距离+字体大小+高度 * 10:可设置节点展开模式 单击+双击+禁用 */ #include <QStyledItemDelegate QAbstractListModel> #include <QListView> #include <QStringList> class NavListView; class NavDelegate : public QStyledItemDelegate
QStyle::State_HasFocus) 6 { 7 itemOption.state ^= QStyle::State_HasFocus; 8 } 9 QStyledItemDelegate