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

网上做论文的网站公司网站开发创业

网上做论文的网站,公司网站开发创业,如何做网站安全扫描,ps做网站页面设置为多大文章目录 1. 在便捷类中启用拖放2. 在模型/视图类中启用拖放 模型/视图框架支持Qt的拖放应用。 列表、表格和树中的项目可以在视图中被拖拽#xff0c;数据作为MIME编码的数据被导入和导出。标准视图可以自动支持内部的拖放。 默认视图的拖放功能并没有被启用#xff0c;如果… 文章目录 1. 在便捷类中启用拖放2. 在模型/视图类中启用拖放 模型/视图框架支持Qt的拖放应用。 列表、表格和树中的项目可以在视图中被拖拽数据作为MIME编码的数据被导入和导出。标准视图可以自动支持内部的拖放。 默认视图的拖放功能并没有被启用如果要进行项目的拖动就需要进行一些属性的设置。 如果在一个新的模型中启用拖放功能还需要重新实现一些函数。 1. 在便捷类中启用拖放 三个便捷类QListWidget、QTreeWidget、QTableWidget中每一种类型的项目都默认配置了一组不同的标志。 每一个QListWidgetItem和QTreeWidgetItem被初始化为可用的、可检查的、可选择的也可以用作拖放的源。每一个QTableWidgetItem可以被编辑和用作拖放操作的目标。 一般还需要在视图中设置一些属性来使它启用对拖放操作的内建支持 启用项目拖拽需要将视图的dragEnable属性设置为true要允许用户将内部或者外部的项目放入视图中需要设置视图的视口viewport()的acceptDrops属性为true要显示现在用户拖拽的项目将要被放置的位置需要设置showDropIndicator属性 如下 ////// 在视图项目中启用拖放功能///listWidget.setSelectionMode(QAbstractItemView::SelectionMode::SingleSelection); // 设置单选模式listWidget.setDragEnabled(true); // 启用拖拽listWidget.viewport()-setAcceptDrops(true); // 设置接受拖放listWidget.setDropIndicatorShown(true); // 设置显示将要被放置的位置listWidget.setDragDropMode(QListWidget::InternalMove); // 设置拖放模式为移动项目如果不设置默认为复制项目treeWidget.setSelectionMode(QAbstractItemView::SelectionMode::SingleSelection); // 设置单选模式treeWidget.setDragEnabled(true); // 启用拖拽treeWidget.viewport()-setAcceptDrops(true); // 设置接受拖放treeWidget.setDropIndicatorShown(true); // 设置显示将要被放置的位置treeWidget.setDragDropMode(QTreeWidget::InternalMove); // 设置拖放模式为移动项目如果不设置默认为复制项目tableWidget.setSelectionMode(QAbstractItemView::SelectionMode::SingleSelection); // 设置单选模式tableWidget.setDragEnabled(true); // 启用拖拽tableWidget.viewport()-setAcceptDrops(true); // 设置接受拖放tableWidget.setDropIndicatorShown(true); // 设置显示将要被放置的位置tableWidget.setDragDropMode(QTableWidget::InternalMove); // 设置拖放模式为移动项目如果不设置默认为复制项目2. 在模型/视图类中启用拖放 在视图中启用拖放功能与在便捷类中的设置相似。如下 ////// 模型/视图中启用拖放功能///listView-setSelectionMode(QAbstractItemView::SingleSelection); // 设置单选模式listView-setDragEnabled(true); // 启用拖放功能listView-setAcceptDrops(true); // 接受拖放listView-setDropIndicatorShown(true); // 显示要被放置的位置自定义模型中的flags()函数要提供对于拖放操作的支持即需要增加Qt::ItemIsDragEnabled和Qt::ItemIsDropEnabled标志。 由于视图中显示的数据是由模型控制的也要为使用的模型提供拖放操作的支持。需要重新实现一些必要的函数。如下 // 设置支持的拖拽动作Qt::DropActions supportedDropActions() const override;// 设置在拖放操作中导出的条目的数据的编码类型QStringList mimeTypes() const override;// 将拖放的数据放入QMimeData中QMimeData *mimeData(const QModelIndexList indexes) const override;// 将拖放操作的数据放入模型中bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex parent) override;这些函数的实现代码如下 /*设置支持使用拖放进行复制和移动两种操作*/ Qt::DropActions StringListModel::supportedDropActions() const {return Qt::CopyAction | Qt::MoveAction; // 设置模型支持拖拽时的移动和复制操作/** 要允许Qt::MoveAction模型需要实现removeRows()函数*/ } /*在拖放操作中的数据项从模型中导出时要被编码为合适的格式来对应一个或多个MIME类型 如下自定义了一个类型仅支持纯文本类型*/ QStringList StringListModel::mimeTypes() const {QStringList types;// application/vnd.text.list为自定义的类型后续需要保持一致types application/vnd.text.list;return types; } /*进行拖放操作之前需要将数据放入到一个QMimeData类型的对象中 如下使用自定义的格式将所有要拖拽的数据都放入一个QMimeData对象中*/ QMimeData *StringListModel::mimeData(const QModelIndexList indexes) const {QMimeData *mimeData new QMimeData;QByteArray encodedData;QDataStream stream(encodedData, QDataStream::WriteOnly);//根据传入的indexes获取到所有的文本数据foreach (const QModelIndex index, indexes) {if(index.isValid()){QString text data(index, Qt::DisplayRole).toString();stream text;}}// 将数据放入QMimeData中mimeData-setData(application/vnd.text.list, encodedData);return mimeData; }bool StringListModel::dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex parent) {// 如果是 Qt::IgnorAction直接返回trueif(action Qt::IgnoreAction)return true;// 如果数据不是指定的格式返回falseif(!data-hasFormat(application/vnd.text.list))return false;// 该模型是列表模型只有一列判断列是否正确if(column0)return false;// 设置开始插入的行int beginRow0;if(row ! -1)beginRow row;else if(parent.isValid())beginRow parent.row();elsebeginRow rowCount(QModelIndex());// 从data中读取数据QByteArray encodedData data-data(application/vnd.text.list);QDataStream stream(encodedData, QDataStream::ReadOnly);QStringList newItem;int rows0;while (!stream.atEnd()) {QString text;stream text;newItem text;rows;}insertRows(beginRow, rows, QModelIndex());foreach (const QString text, newItem) {QModelIndex idx index(beginRow, 0, QModelIndex());setData(idx, text);beginRow;}return true; }任何给定的模型处理放入数据的方式都依赖于它们的类型和向用户展现的方式。 一般应该使用最适合模型底层数据存储的方式来容纳放入的数据。不同类型的模型会使用不同的方式来处理放入的数据。 列表和表格模型只提供了一个平面结构来存储数据项结果是可能会在当数据放入一个视图中的已经存在的项目时插入新的行或列或者会使用提供的数据来覆盖已经存在的项目的内容。 树模型一般会在底层数据存储中添加包含新的数据的子项。 最后还需要更新flags()函数用于提供合适的标志向视图表明哪些项目是可以被拖拽的、哪些项目是可以接受放入的。 在自定义模型中实现视图中的项的拖放代码参考https://github.com/Innern/Qt/tree/master/ModelView/Examples/01_AddressBooks该项目参考了官方示例Address Books Example但是增加了对视图中的项的拖放的支持。 如下 需要注意的是 mimeData()函数的参数indexes包含所有选择拖放的项的索引。比如 如果是简单的列表视图只有一列选择拖放时只选择了一行那么indexes中包含一个索引即这一行的索引。如果是表格视图有两列选择拖放时选择一行那么indexes中包含两个索引即这一行的每一列的索引。
http://www.sczhlp.com/news/157185/

相关文章:

  • 盐城网站开发网站开发的收获体会
  • 广州制作外贸网站公司简介建设网站专业公司哪家好
  • 宣城做网站公司广州 网站建设 制作
  • 深圳学校网站建设报价做网站 你的出路在哪里
  • 西宁好的网站建设公司深圳开发公司
  • 企业官方网站需要备案吗品牌推广公司排行榜
  • 网站虚拟主持人8个页面的网站怎么做
  • 网站建设需要包含什么搜索引擎营销简称
  • 长沙市网站制作哪家专业可以全部免费观看的软件
  • wordpress mv网站模板餐饮最有效的营销方案
  • 旅游网站建设网站第一ppt模板免费下载
  • 厦门英文网站建设dw做网站基础
  • 国家电网网站制作大连招标投标信息网
  • 自己创建公司网站网站编程需要什么语言
  • 龙华网站建设yihe kj网站建设公司渠道
  • 详细介绍:c++ 之多态虚函数表
  • pdf
  • 做网站推广需要具备哪些条件网站公司网站开发方案
  • 杭州网站建设卖文具的网站建设
  • 企业网站建设文档wordpress子主题下载
  • 网站建设一二级目录热门软件排行榜
  • 旅游网站开发工程师seo顾问服务咨询
  • 网站建设基础学习室内装修公司排名
  • 大连城乡建设网站河南个人网站建设
  • 电商设计网站哪个好做网站p图工具
  • win8风格网站 源码o2o网站建设计划书
  • 我的网站打不开了网站 代备案
  • 网站开发前台实训wordpress域名变更
  • 云南网站建设公司排行怎么增加网站关键词库
  • 西安有哪些网站建设公司好wordpress弃用react