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

百度推广帮做网站网站tkd怎么做

百度推广帮做网站,网站tkd怎么做,自己学习做网站6,网上做任务挣钱的网站一、为什么需要委托 模型#xff08;model#xff09;用来数据存储#xff0c;视图#xff08;view#xff09;用来展示数据。因此#xff0c;模型/视图架构是一种将数据存储和界面展示分离的编程方法。具体如下图所示#xff1a; 由图可知#xff0c;模型向视图提供数…一、为什么需要委托 模型model用来数据存储视图view用来展示数据。因此模型/视图架构是一种将数据存储和界面展示分离的编程方法。具体如下图所示 由图可知模型向视图提供数据是单向的一般仅用于显示数据。当我们需要在视图上编辑数据时就需要用到委托delegate来提供一个临时的编辑器。这个编辑器既能获取模型的数据又能在接受用户编辑的数据后提交给模型。 注delegate有的书上直接翻译为代理。个人认为这个翻译不太准确因为在Qt中代理Proxy和委托Delegate是两个不同的概念。Proxy用于数据模型和视图之间的一些中介操作包括对数据进行过滤、排序和转换。而Delegate则用于自定义视图项的显示和编辑行为主要用于定制单元格的外观和编辑控件。 二、自定义委托 1.为什么自定义委托 如果我们没有提前进行任何设置在默认情况下委托提供的临时编辑器是QLineEdit编辑框。而我们知道QLineEdit不仅可以输入文字还能输入数组字母符号等任何数据。但是更多情况下我们希望根据数据类型使用不同的编辑器。 2.如何自定义委托 QStyledItemDelegate是视图组件使用的默认委托类。因此在创建好自定义委托类后必须首先将自定义的委托类实现QStyledItemDelegate中定义的4个虚函数右键选择重构可自动生成。而这4个虚函数是模型/视图系统自动调用的。 1creareEditor() 这个函数用来创建编辑模型数据的界面组件称为代理编辑器。函数定义如下 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类型。因此后面要注意类型转换。 2setEditorData() 这个函数会从数据模型获取数据然后显示到代理组件中。函数定义如下 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_castQSpinBox*(editor); // 类型转换spinBox-setValue(value); } 3setModelData() 这个函数会将代理组件的数据保存到数据模型中。函数定义如下 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_castQSpinBox*(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://www.zqtcl.cn/news/990578/

相关文章:

  • dedecms可以做什么网站织梦做的网站在手机上显示
  • 温州建设小学的网站吐鲁番seo快速排名
  • 翼城网站建设重庆平台网站建设多少钱
  • 短视频网站的动画是怎么做的外贸一般用什么平台
  • 北京建站开发企业网站建设平台
  • 建设网站建设什么征琴他达拉非
  • 详情页制作网站广州建设工程招标信息网
  • wordpress 响应速度慢长沙seo排名扣费
  • 网站首页二级下拉框怎么做酒店网站建设方案
  • 公众号流量投放网络优化工程师有前途吗
  • 电影网站app怎么做的网站关键词是什么
  • 成都做网站建设公司建设网站总结报告
  • 个人网站要备案嘛免费响应式模板网站
  • 淘宝网站内站建设免费个人网站怎么建立
  • 网站运营经验分享ppt沉默是金粤语谐音歌词
  • 建设部网站人员查询wordpress中文 手机版
  • 大港油田建设网站电子商务公司取名字参考大全
  • 贵阳网站建设多点互动wordpress分页出现404
  • wap微信网站模板网站如何做链接
  • 泉州专业网站开发公司怎么免费做公司网页
  • 嵌入式软件开发前景怎么样百度官方优化指南
  • 网站访问速度优化工具网页设计模板图片大全
  • 哪里有手机网站制作公司网页设计与制作心得体会800字
  • 湖南建设厅网站首页简述网站建设的基本思路
  • 蚌埠公司做网站网站开发月薪
  • 怎么更换网站logo推荐几个没封的正能量网站
  • 开网站的宣传图片怎么做php网站建设面试
  • 哪些网站可以下载视频网站建设评价量规
  • 惠州市建设局网站网站模块设计怎么做
  • 群晖可不可以做网站用如何查询商标是否已经被注册