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

做a短视频网站asp做静态网站

做a短视频网站,asp做静态网站,网站建设与维护学什么,顺德网站定制设计这是我对 Qt 的 model/view 内容理解的第二篇 blog#xff0c;在第一篇文章中#xff0c;介绍 QTableView 和 QAbstractTableModel#xff0c;实现显示了对数据源的显示#xff0c;但是显示的格式和修改的模式都是按照 View 控件的自显示方式。在此#xff0c;使用 Qt 自带…这是我对 Qt 的 model/view 内容理解的第二篇 blog在第一篇文章中介绍 QTableView 和 QAbstractTableModel实现显示了对数据源的显示但是显示的格式和修改的模式都是按照 View 控件的自显示方式。在此使用 Qt 自带的 QStyledItemDelegate 类实现对特定行 / 列的显示 / 修改模式实现实现过程中不出现对 item 的代码生成对 item 的生成由程序自动完成。 在此同样以《c gui programming with Qt4》中的 trackEditor 例子作一讲解。 在此我们首先应当考虑以下几个问题 1有一个代理类加到 View 中处理特定的 View 内容。 2代理类要完成以下几项工作a当用户修改数据时生成用户要求的控件用户每次修改数据时在相应的位置都会生成控件所以当控件用完后应 del 释放资源。b设置在生成的修改控件中显示的内容。c设置要写到 model 中的数据内容。d设置当结束修改数据后View 显示的内容。 在此我们需要实现以下 4 个类。 /** brief 保存显示数据的类。 */ class Track/** brief 继承的委托类。 */ class TrackDelegate : public QStyledItemDelegate/** brief 继承的模型类。 */ class TrackModel : public QAbstractTableModel/** brief 用于组装显示的控件类。 */ class TrackEditor : public QDialog 在此Track TrackModel TrackEditor 的功能在 Qt model/view 理解 1 中做过介绍在此只列出 code不再过多介绍。在此主要介绍 TrackDelegate。 Track h 文件 #ifndef TRACK_H #define TRACK_H#include QString/**projectName ItemViewauthor qiaoweidate 2018-12-22version 1.0description 保存的音频数据包括音频名称和时长 **/ class Track { public:explicit Track(const QString title , int duration 0);QString getTitle() const;void setTitle(const QString title);int getDuration() const;void setDuration(int duration);private:/**author qioaweidate 2018-12-22description 音频名称**/QString title_;/**author qioaweidate 2018-12-22description 音频时长单位秒**/int duration_; };#endif // TRACK_H Track.cpp #include track.hTrack::Track(const QString title, int duration) :title_(title),duration_(duration) {}QString Track::getTitle() const {return title_; }void Track::setTitle(const QString title) {title_ title; }int Track::getDuration() const {return duration_; }void Track::setDuration(int duration) {duration_ duration; } TrackModel.h #ifndef TRACKMODEL_H#define TRACKMODEL_H#include QWidget #include QAbstractTableModel #include QList #include track.h #include QObject/**brief 继承的模型类。 */ class TrackModel : public QAbstractTableModel {Q_OBJECTpublic:explicit TrackModel(QListTrack* tracks, QObject* parent 0);~TrackModel();virtual int rowCount(const QModelIndex parent) const;virtual int columnCount(const QModelIndex parent) const;virtual QVariant data(const QModelIndex index, int role) const;virtual bool setData(const QModelIndex index,const QVariant value,int role);virtual Qt::ItemFlags flags(const QModelIndex index) const;private:QListTrack* tracks; };#endif // TRACKMODEL_H TrackEditor h 文件 #ifndef TRACKEDITOR_H#define TRACKEDITOR_H#include QDialog#include track.hQT_BEGIN_NAMESPACE class QTableView; class TrackModel; class QAbstractTableModel; QT_END_NAMESPACEnamespace Ui { class TrackEditor; }/**brief 用于组装显示的控件类。 */ class TrackEditor : public QDialog {Q_OBJECTpublic:explicit TrackEditor(QListTrack* tracks, QWidget *parent 0);~TrackEditor();private:Ui::TrackEditor *ui;QTableView* tableView;TrackModel* model;//QAbstractTableModel* model; };#endif // TRACKEDITOR_H TrackDelegate h 文件 #ifndef TRACKDELEGATE_H#define TRACKDELEGATE_H#include QObject #include QStyledItemDelegateQT_BEGIN_NAMESPACE class QPainter; QT_END_NAMESPACE/**brief 继承的委托类。 */ class TrackDelegate : public QStyledItemDelegate { public:explicit TrackDelegate(QObject* parent 0);~TrackDelegate();virtual QWidget* createEditor(QWidget *parent,const QStyleOptionViewItem option,const QModelIndex index) const;virtual void setEditorData(QWidget* parent,const QModelIndex index) const;virtual void setModelData(QWidget* editor,QAbstractItemModel* model,const QModelIndex index) const;virtual void updateEditorGeometry(QWidget* editor,const QStyleOptionViewItem option,const QModelIndex index) const;virtual void paint(QPainter* painter,const QStyleOptionViewItem option,const QModelIndex index) const;virtual QSize sizeHint(const QStyleOptionViewItem option,const QModelIndex index) const;private:bool isRightColumn(const QModelIndex index, const int column) const; private slots:void commitAndCloseEditor();private:static const int columnNumber; };#endif // TRACKDELEGATE_H TrackDelegate cpp 文件 #include trackdelegate.h #include QTimeEdit #include QPainter #include QApplication#include trackmodel.hconst int TrackDelegate::columnNumber 1;TrackDelegate::TrackDelegate(QObject* parent) :QStyledItemDelegate(parent) {}TrackDelegate::~TrackDelegate() {}QWidget* TrackDelegate::createEditor(QWidget *parent,const QStyleOptionViewItem option,const QModelIndex index) const {if (isRightColumn(index, TrackDelegate::columnNumber)) {QTimeEdit *timeEdit new QTimeEdit(parent);timeEdit-setDisplayFormat(hh:mm);//当控件结束编辑内容时触发释放资源connect(timeEdit, QTimeEdit::editingFinished,this, TrackDelegate::commitAndCloseEditor);//int secs index.model()-data(index, Qt::DisplayRole).toInt();int secs index.model()-data(index, Qt::EditRole).toInt();QTime time(secs / 60, secs % 60);timeEdit-setTime(time);return timeEdit;} else {return QStyledItemDelegate::createEditor(parent,option,index);} }void TrackDelegate::setEditorData(QWidget *editor, const QModelIndex index) const {if ( !index.isValid()) {return;}QTimeEdit* timeEditor qobject_castQTimeEdit*(editor);if ( !timeEditor) {return;}if (isRightColumn(index, TrackDelegate::columnNumber)) {int secs index.model()-data(index, Qt::EditRole).toInt();QTime time(secs / 60, secs % 60);timeEditor-setTime(time);} else {QStyledItemDelegate::setEditorData(editor, index);} }void TrackDelegate::setModelData(QWidget *editor,QAbstractItemModel *model,const QModelIndex index) const {if ( !index.isValid()) {return;}QTimeEdit* timeEditor qobject_castQTimeEdit*(editor);if ( !timeEditor) {return;}if (isRightColumn(index, TrackDelegate::columnNumber)) {QTime time timeEditor-time();int secs time.hour() * 60 time.minute()model-setData(index, secs, Qt::EditRole);} else {QStyledItemDelegate::setModelData(editor,model,index);} }void TrackDelegate::updateEditorGeometry(QWidget *editor,const QStyleOptionViewItem option,const QModelIndex index) const {Q_UNUSED(index);editor-setGeometry(option.rect); }void TrackDelegate::paint(QPainter *painter,const QStyleOptionViewItem option,const QModelIndex index) const {if (isRightColumn(index, TrackDelegate::columnNumber)) {int secs index.model()-data(index, Qt::EditRole).toInt();QString text QString(%1:%2).arg(secs / 60, 2, 10, QChar(0)).arg(secs % 60, 2, 10, QChar(0));//获取项风格设置QStyleOptionViewItem myOption option;myOption.displayAlignment Qt::AlignRight | Qt::AlignVCenter;painter-drawText(option.rect, text);} else {QStyledItemDelegate::paint(painter, option, index);} }QSize TrackDelegate::sizeHint(const QStyleOptionViewItem option,const QModelIndex index) const {return option.rect.size(); }void TrackDelegate::commitAndCloseEditor() {QTimeEdit* editor qobject_castQTimeEdit*(sender());emit commitData(editor);emit closeEditor(editor); }bool TrackDelegate::isRightColumn(const QModelIndex index,const int column) const {if ( !index.isValid()) {return false;}if (index.column() column) {return true;} else {return false;} } createEditor 用于创建用户自己需要的显示数据控件。 setEditorData 用于设置显示控件中显示的具体数据信息。 setModelData 用户设置模型的数据也可理解为当显示的数据发生变化后用户 update 模型数据保持显示 / 储存内容一致。 paint 由用户自己绘制要显示的内容信息很重要当你点击时间框修改时间要改的内容为原显示内容并允许你修改而不是数据变为 00:00让你修改。 commitAndCloseEditor 创建关于 commitData 和 closeEditor 的信号槽链接保证当代理控件的数据修改完成后释放信号保存数据保存数据步骤由系统自动完成。 在此要求注意内容 在 TrackModel 类中的 setData 方法应当注意data 的值应从 value 得出而不是通过 model 的 data 得出model 得出的数据是原来保存的而不是用户修改的。
http://wiki.neutronadmin.com/news/8923/

相关文章:

  • 企业怎么做网站做网站的公司中国500强企业官网
  • 做外贸的免费网站4a级旅游网站建设的要求
  • 建站开发护肤品 网站建设策划书
  • 免费建立网站哪个好wordpress 缓存腾讯cos
  • 太原网站制作企业北京网站优化常识
  • 高端大气的网站首页手机软件开发平台
  • 网站建设模板素材河南网站建设外贸
  • 陕西有限公司网站建设招标公告网站建设需要多少
  • wordpress免费网站模板部门网站管理建设工作汇报
  • 2017做网站赚钱网站建设的总体目标
  • 用软件做seo网站关键词推广asp flash网站模板
  • 做网站需要多少固定带宽爱站网长尾关键词挖掘工具下载
  • 网站的开发建设要做什么南昌专门做网站
  • 网站做302重定向会怎么样西安网站建设中企建站
  • 网站开发脚本语言和数据库网站建设服务费的会计处理
  • 济南网站运营公司做动效很好的网站
  • 秦皇岛网站推广报价个人网站 数据库如何上传到空间
  • 百中搜如何做网站排名网站设计相似侵权吗
  • 最好看免费观看高清大全一影视下载绍兴seo优化
  • 网站颜色背景代码类似返利网的网站建设
  • 焦作市网站建设如何在网站做宣传
  • 南宁免费自助建站模板东莞路桥公司是国企吗
  • 陕西建设网查证件查询windows优化软件排行
  • 网站建设计划书实验总结python wordpress
  • 网站建设技术人员工作总结浙江建设信息港网成绩查询
  • 企业网站建设哪家快宜春网站推广优化
  • 广东网站设计有名的公司学生做的动漫网站
  • 门户网站建设目标建立网站的主要步骤
  • 学校网站开发实际意义嘉兴新闻头条最新消息
  • 奇搜建设辽沈阳网站电商出口营销要多少钱