当前位置: 首页 > 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.zqtcl.cn/news/107205/

相关文章:

  • 中英文网站建设报价河南网站建设推广公司
  • 什么是建设网站提升seo排名平台
  • 广告设计模板网站模版网站是什么意思
  • 网站网站模板企业网站制作排名
  • 食品网站开发淘客手机版网站怎么做
  • 厦门市网站建设app开发水务 网站建设
  • jfinal网站开发装修公司加盟哪家最好
  • 成都个人网站制作石家庄设计网站公司
  • 阿里巴巴网站本土化建设烟台市两学一做网站
  • 潍坊品牌网站建设公司旅游类作业网站
  • 建设谷歌公司网站费用求职seo推荐
  • 企业网站建设规划ppt企业网站前端模板下载
  • 补习吧 一家专门做家教的网站百度云搜索引擎入口网盘搜索神器
  • 网站建设与制作企业嘉鱼网站建设哪家专业
  • 电脑怎么做网站赚钱柳州柳北建设局网站
  • 农村服务建设有限公司网站设计基础网站推荐
  • 做网站的编程语言组合ppt模板免费的网站推荐
  • 泰安企业建站公司流程上海营销型网站报价
  • 网站承载量怎么做福州公交集团网站建设
  • 新吴区住房和建设交通局网站小程序商城哪家好排行榜
  • 中小学网站建站模板长春火车站咨询电话
  • c2c网站特点公司网站建设亚运村
  • 邢台wap网站建设费用黑帽seo之搜索引擎
  • 如何用阿里云做网站刷题网站怎么做
  • 织梦制作手机网站上海猎头公司名单
  • 免费生成图片的网站wordpress 购物
  • 江西建设部网站国际新闻最新消息今天2023
  • 怎么做网站啊wordpress英文显示改中文
  • 建筑专业网站有哪些网站标题seo外包优化
  • 浙江建设厅网站施工员报名中国建设协会官网站