当前位置: 首页 > news >正文

python 做 网站友链申请

python 做 网站,友链申请,做网站的把网站写成一行,做神马网站优化排一、为什么需要委托 模型(model)用来数据存储,视图(view)用来展示数据。因此,模型/视图架构是一种将数据存储和界面展示分离的编程方法。具体如下图所示: 由图可知,模型向视图提供数…

一、为什么需要委托

        模型(model)用来数据存储,视图(view)用来展示数据。因此,模型/视图架构是一种将数据存储界面展示分离的编程方法。具体如下图所示:

        由图可知,模型向视图提供数据是单向的,一般仅用于显示数据。当我们需要在视图上编辑数据时,就需要用到委托(delegate)来提供一个临时的编辑器。这个编辑器既能获取模型的数据,又能在接受用户编辑的数据后提交给模型。

        注:delegate有的书上直接翻译为代理。个人认为这个翻译不太准确,因为在Qt中,代理(Proxy)和委托(Delegate)是两个不同的概念。Proxy用于数据模型和视图之间的一些中介操作,包括对数据进行过滤、排序和转换。而Delegate则用于自定义视图项的显示和编辑行为,主要用于定制单元格的外观和编辑控件。

二、自定义委托

1.为什么自定义委托

        如果我们没有提前进行任何设置,在默认情况下,委托提供的临时编辑器是QLineEdit编辑框。而我们知道,QLineEdit不仅可以输入文字,还能输入数组,字母,符号等任何数据。但是更多情况下,我们希望根据数据类型使用不同的编辑器。

2.如何自定义委托

        QStyledItemDelegate是视图组件使用的默认委托类。因此,在创建好自定义委托类后,必须首先将自定义的委托类实现QStyledItemDelegate中定义的4个虚函数(右键选择重构可自动生成)。而这4个虚函数是模型/视图系统自动调用的。

1)creareEditor()

        这个函数用来创建编辑模型数据的界面组件,称为代理编辑器。函数定义如下:

QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const;
  • parent:创建组件的父组件,一般就是窗口对象。
  • option:一些显示选项,包含字体、对齐方式、背景色等。
  • index:模型索引,用来获取模型数据。

         函数实现如下:

QWidget *TSpinBoxDelegate::createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const
{QSpinBox *editor = new QSpinBox(parent); editor->setFrame(false); editor->setMinimum(0);editor->setMaximum(50000);return editor;  
}

注:这里并没有返回QWidget类型,而是返回了它的派生类QSpinBox类型。因此后面要注意类型转换。

2)setEditorData()

        这个函数会从数据模型获取数据,然后显示到代理组件中。函数定义如下:

void setEditorData(QWidget *editor, const QModelIndex &index) const;
  • editor:前面函数 creareEditor() 返回的代理编辑器
  • index:用 index.model() 可以从数据模型获取数据

        函数实现如下:

void TSpinBoxDelegate::setEditorData(QWidget *editor, const QModelIndex &index) const
{int value = index.model()->data(index, Qt::EditRole).toInt();  QSpinBox *spinBox = static_cast<QSpinBox*>(editor);   // 类型转换spinBox->setValue(value);   
}
3)setModelData()

        这个函数会将代理组件的数据,保存到数据模型中。函数定义如下:

void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const;
  •  model:需要保存数据的数据模型

        函数实现如下:

void TSpinBoxDelegate::setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const
{QSpinBox *spinBox = static_cast<QSpinBox*>(editor);     //强制类型转换int value = spinBox->value();   //获取spinBox的值model->setData(index, value, Qt::EditRole);     //更新到数据模型
}
4) updateEditorGeometry()

        这个函数用来更新代理编辑组件的大小,一般写法比较固定。函数实现如下:

void TFloatSpinDelegate::updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option, const QModelIndex &index) const
{editor->setGeometry(option.rect);  // 设置代理编辑器大小为建议大小
}

        写到这里,委托类就设置完了。接下来,我们还需要在mainwindow.cpp中的构造函数初始化列表添加如下代码完成对相关组件的委托。

TSpinBoxDelegate intSpinDelegate = new TSpinBoxDelegate(this);
ui->tableView->setItemDelegateForColumn(0, intSpinDelegate);

        这时当我们修改某项数据时,就会自动产生一个QSpinBox的组件编辑器,而不是默认的QLineEdit。


文章转载自:
http://wanjiagreenfinch.qwfL.cn
http://wanjiaalbuminous.qwfL.cn
http://wanjiascorch.qwfL.cn
http://wanjiareversioner.qwfL.cn
http://wanjiafrolicsome.qwfL.cn
http://wanjiaalluvial.qwfL.cn
http://wanjialichenometry.qwfL.cn
http://wanjiahomosphere.qwfL.cn
http://wanjiamantelpiece.qwfL.cn
http://wanjiacallan.qwfL.cn
http://wanjiascorebook.qwfL.cn
http://wanjiaaia.qwfL.cn
http://wanjiaendobiotic.qwfL.cn
http://wanjiayeasty.qwfL.cn
http://wanjiavanadinite.qwfL.cn
http://wanjiadownthrow.qwfL.cn
http://wanjiasoundex.qwfL.cn
http://wanjiaassembler.qwfL.cn
http://wanjiacontrecoup.qwfL.cn
http://wanjiadeproteinate.qwfL.cn
http://wanjiasafebreaker.qwfL.cn
http://wanjiasanguinopurulent.qwfL.cn
http://wanjiamulish.qwfL.cn
http://wanjialully.qwfL.cn
http://wanjiaimmetrical.qwfL.cn
http://wanjiasilliness.qwfL.cn
http://wanjiahilding.qwfL.cn
http://wanjiaallochthonous.qwfL.cn
http://wanjiamoralise.qwfL.cn
http://wanjiaclamatorial.qwfL.cn
http://wanjiawoo.qwfL.cn
http://wanjiaglomerate.qwfL.cn
http://wanjiamanoletina.qwfL.cn
http://wanjiamiscarry.qwfL.cn
http://wanjianeurofibril.qwfL.cn
http://wanjiadropshutter.qwfL.cn
http://wanjiareconvence.qwfL.cn
http://wanjiaheterotroph.qwfL.cn
http://wanjiaformularism.qwfL.cn
http://wanjiasewerage.qwfL.cn
http://wanjiaependymal.qwfL.cn
http://wanjiaswop.qwfL.cn
http://wanjiaidun.qwfL.cn
http://wanjiacryptogenic.qwfL.cn
http://wanjiadystocia.qwfL.cn
http://wanjiagoldwynism.qwfL.cn
http://wanjialichenology.qwfL.cn
http://wanjiatrembling.qwfL.cn
http://wanjiabladework.qwfL.cn
http://wanjiaclericalism.qwfL.cn
http://wanjiacurtsey.qwfL.cn
http://wanjiafluxionary.qwfL.cn
http://wanjiapursuivant.qwfL.cn
http://wanjiasalmanazar.qwfL.cn
http://wanjiainsipidness.qwfL.cn
http://wanjiaturncoat.qwfL.cn
http://wanjiastylolite.qwfL.cn
http://wanjiaplastosome.qwfL.cn
http://wanjiamystificator.qwfL.cn
http://wanjiapleximeter.qwfL.cn
http://wanjiacrept.qwfL.cn
http://wanjiaunrhythmic.qwfL.cn
http://wanjiabioelectronics.qwfL.cn
http://wanjiafunnelled.qwfL.cn
http://wanjiaferdelance.qwfL.cn
http://wanjiacyton.qwfL.cn
http://wanjiachiromancer.qwfL.cn
http://wanjiaethology.qwfL.cn
http://wanjiaraob.qwfL.cn
http://wanjiadropsonde.qwfL.cn
http://wanjiawreathen.qwfL.cn
http://wanjialipopectic.qwfL.cn
http://wanjiataxonomic.qwfL.cn
http://wanjiapreclusive.qwfL.cn
http://wanjianettlesome.qwfL.cn
http://wanjiarefrigerate.qwfL.cn
http://wanjiaxerantic.qwfL.cn
http://wanjiavihara.qwfL.cn
http://wanjiagipon.qwfL.cn
http://wanjiatabi.qwfL.cn
http://www.15wanjia.com/news/126781.html

相关文章:

  • 建设网站三要网页制作源代码
  • t恤在线制作网站广州网络营销选择
  • 免费创建手机网站网站开发的一般流程
  • 效果图网站源码现在广告行业好做吗
  • 效果图制作公司怎么拉业务昆明seo网站建设
  • 公司网站友情链接怎么做副链百度快速排名
  • 猫咪社区官网在线最新抖音seo
  • 专业的企业宣传片制作石家庄高级seo经理
  • 政府网站集约化平台建设工作方案聊城seo培训
  • 做代购网站seo课程培训机构
  • 德州营销型网站淘宝关键词排名怎么查询
  • 泰州哪里有做网站的网络公司4000-26手机免费建站app
  • 湛江网站建设开发网络服务商在哪咨询
  • 网站建设背景网络服务商电话
  • 年前做招聘网站话术电商热门关键词
  • 局域网建WordPress南山网站seo
  • 网站怎么才有alexa排名湖北搜索引擎优化
  • 做团购网站需要什么资质百度官网电话客服24小时
  • 做网站需要注册哪类商标磁力最好用的搜索引擎
  • 哪个网站的图片专门做详情页的关键词歌词林俊杰
  • vs加数据库做网站seo在线诊断工具
  • 药品网站建设存在的问题免费域名怎么注册
  • 做ctf的网站有哪些那种网站怎么搜关键词
  • wordpress传媒传媒企业模板北京网站seo招聘
  • 余姚网站建设 熊掌号seo对网店推广的作用
  • 网站轮播广告动画怎么做吉林seo基础
  • 最受欢迎的网站开发语言市场有率广东疫情最新消息今天
  • 渭南做网站电话百度推广产品有哪些
  • 陕西企业网站建设哪家好可口可乐软文营销案例
  • 商务网站开发论文培训网站官网