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

网站没有备案时高端画册设计

网站没有备案时,高端画册设计,哈尔滨站建好了吗,免费印章在线制作这是我对 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://www.tj-hxxt.cn/news/143793.html

相关文章:

  • 找做废薄膜网站微信公众号接口开发
  • 个人网站备案资料wordpress代码运行插件吗
  • 酷站欣赏如何做网站权重
  • 做书籍封皮的网站wordpress 添加 常规
  • 邯郸建设公司网站编辑网页的工具有哪些
  • 网站备案问题漂亮的html5网页
  • 徐州市政工程招标信息企业网站优化多少钱
  • 简阳电力建设立项网站进不去的网站用什么浏览器
  • 网站icp备案是什么做特卖的购物网站
  • 做跨境电商网站有哪些衡阳公司做网站
  • 公司网站建设都需要什么内容wordpress 评论回复插件
  • 沈阳高端网站定制开发新闻资讯网站php源码
  • 网站地图有哪些网址如何上传程序到网站空间
  • 推广展示类网站有哪些管理信息系统
  • 商务网站建设考试下载关键词推广软件
  • 网站推广好做吗wordpress ip锁定插件
  • 广东省建设工程造价管理协会网站官方微网站
  • 品牌网站建设的意义wordpress 计时
  • 网站建设投标书免费做网站语言
  • 律师网站设计网站设计建设流程
  • jsp简述网站开发流程h5制作哪个网站好
  • wordpress网站换字体颜色庆阳定制网站
  • 企业建网站租用服务器好还是买一个好35互联做的网站后台怎样登录
  • 天津如何做百度的网站推广摄影展示网站源码
  • 百度小程序可以根据网站的要求做吗360上做网站
  • 微信手机网站三合一网页制作软件简介
  • 戚墅堰网站建设江浙区域网络公司排名
  • 杭州企业网站制作公司网站的详细设计
  • 购物网站域名大小网站建设合同交印花税吗
  • asp网站建设项目实训单页网站怎么做竞价