资源简介
QT中delegate自定义委托的小例子,有注释说明和源码
简单基础部件的委托可以继承QItemDelegate,并使用这些函数的默认实现,委托编辑器可以通过使用小工具来管理编辑过程或直接处理事件来实现。
使用Delegate的原因:Qt中当用到QTreeView和QTableView等用于显示item的视图时,你要编辑一个item用到的编辑工具可能是除了默认文字编辑lineEdit以外的工具,例如button,spinBox,甚至Slider,ProgressBar,也有可能是自定义的widget。所以Qt提供了一个委托类,用来处理View中的数据展示方式
代码片段和文件信息
#pragma execution_character_set(“utf-8“)
#include “comboxdelegate.h“
#include
ComBoxDelegate::ComBoxDelegate(Qobject *parent)
:QItemDelegate(parent)
{
}
//创建委托控件
QWidget *ComBoxDelegate::createEditor(QWidget *parent const QstyleOptionViewItem &option const QModelIndex &index) const
{
Q_UNUSED(index);
Q_UNUSED(option);
QComboBox *box = new QComboBox(parent);
//设置下拉列表的选线内容
QStringList strList;
strList<
box->addItems(strList);
return box;
}
//设置控件数据
void ComBoxDelegate::setEditorData(QWidget *editorconst QModelIndex &index) const
{
//获取单元格内容
QString str = index.data().toString();
QComboBox *box = static_cast(editor);
int currentIndex = box->findText(str);
if(currentIndex >= 0)
{
box->setCurrentIndex(currentIndex);
}
}
//设置模型数据
void ComBoxDelegate::setModelData(QWidget *editorQAbstractItemModel *modelconst QModelIndex &index) const
{
//获取编辑控件的内容
QString str = static_cast(editor)->currentText();
//设置模型数据
model->setData(indexstr);
}
//设置控件位置
void ComBoxDelegate::updateEditorGeometry(QWidget *editorconst QstyleOption &optionconst QModelIndex &index)
{
Q_UNUSED(index);
//更新控件位置大小
editor->setGeometry(option.rect);
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1560 2020-07-08 11:27 CustomDelegate\comboxdelegate.cpp
文件 796 2020-03-20 16:08 CustomDelegate\comboxdelegate.h
文件 545 2020-03-22 15:23 CustomDelegate\CustomDelegate.pro
文件 2217 2020-03-20 15:25 CustomDelegate\datetimeeditdelegate.cpp
文件 1018 2020-03-22 14:45 CustomDelegate\datetimeeditdelegate.h
文件 114 2020-03-20 10:16 CustomDelegate\dialog.cpp
文件 195 2020-03-20 10:16 CustomDelegate\dialog.h
文件 2752 2020-03-22 23:21 CustomDelegate\main.cpp
文件 87 2020-03-20 10:18 CustomDelegate\res.qrc
文件 1327 2020-03-23 12:55 CustomDelegate\spinboxdelegate.cpp
文件 803 2020-03-22 22:54 CustomDelegate\spinboxdelegate.h
文件 106 2015-03-26 13:50 CustomDelegate\test.txt
目录 0 2020-09-18 16:19 CustomDelegate
----------- --------- ---------- ----- ----
11520 13
评论
共有 条评论